Archive for the ‘Web Code’ Category
I was playing around and wondered how accurate would it be to use a negative unix timestamp. Well, it appears to be pretty accurate.
Check it out, here’s a generic function.
function backdate($time){
$day = 86400;
$year = 31536000;
if($time <= 0){
$timeleft = $time;
$yy = (floor($timeleft/$year))*-1;
$timeleft = $timeleft + ($yy*$year);
$dd = floor($timeleft/$day);
$year = "19".(70-$yy);
$yyy = intval((72-(70-$yy))/4);
}else{
$timeleft = $time;
$yy = intval($timeleft/$year);
$timeleft = $timeleft - ($yy*$year);
$dd = intval($timeleft/$day);
$yyy = (intval($yy/4)*-1)+1;
$x = 70+$yy;
if($x > 99){
$x = $x - 100;
if($x<=9){$x="0".$x;}
$year = "20".$x;
}else{
$year = "19".(70+$yy);
}
}
$yyy = $yyy;
$dd = $dd+$yyy;
if($dd > 365){
$year = $year+1;
$dd = $dd - 365;
}
if($dd < 1){
$year = $year-1;
$dd = 365+$dd;
}
if($dd >= 1 && $dd <= 31){
$mm = 1;
}else if($dd >= 32 && $dd <= 59){
$mm = 2;
$dd = $dd - 31;
}else if($dd >= 60 && $dd <= 90){
$mm = 3;
$dd = $dd - 59;
}else if($dd >= 91 && $dd <= 120){
$mm = 4;
$dd = $dd - 90;
}else if($dd >= 121 && $dd <= 151){
$mm = 5;
$dd = $dd - 120;
}else if($dd >= 152 && $dd <= 181){
$mm = 6;
$dd = $dd - 151;
}else if($dd >= 182 && $dd <= 212){
$mm = 7;
$dd = $dd - 181;
}else if($dd >= 213 && $dd <= 243){
$mm = 8;
$dd = $dd - 212;
}else if($dd >= 244 && $dd <= 273){
$mm = 9;
$dd = $dd - 243;
}else if($dd >= 274 && $dd <= 304){
$mm = 10;
$dd = $dd - 273;
}else if($dd >= 305 && $dd <= 334){
$mm = 11;
$dd = $dd - 304;
}else if($dd >= 335 && $dd <= 365){
$mm = 12;
$dd = $dd - 334;
}else{
$mm = "MM";
//$dd = "DD";
}
if($dd <= 9 && $dd >= 1){
$dd = "0" . $dd;
}
if($mm <= 9 && $mm >= 1){
$mm = "0" . $mm;
}
return $mm . "/" . $dd . "/" . $year;
}
$input = "12/29/1951"; //input your date here
$parts = explode("/", $input);
$unix = mktime(0,0,0,$parts[0],$parts[1],$parts[2]);
echo "Input date is: " . $input;
echo "Unix convertion: " . $unix;
$convo = backdate($unix);
echo "The rebuilt time is: ". $convo;
I haven’t like crazy checked this out, but I did compare it against a db with over 200+ birthdays in it, and it appeared to be pretty accurate. Only flaw if any is the leap year adjustment.








