恕我直言,当你在考虑比较时间时,你会自动开始谈论Unix时间.从本质上讲,Unix时间是以秒为单位的计数,总是递增.如果你有2个Unix时间戳,那么你可以使用简单的算法来计算差异,然后将差异转换为人类可读的形式.
请注意,Unix时间戳在几乎所有编程语言中都很常见,因此您可以选择是在PHP,MySQL还是JavaScript中执行此操作,并且它们都可以采用相同的方式.我将向您展示PHP版本.
所以你想这样做:
>查找目标事件的Unix时间戳
>将其存储在MySQL数据库中
>从数据库中检索
>获取当前的Unix时间戳
>减去差异
>乘法/除法以获得人类可读的格式
PHP代码:
//Unix timestamp to Dec. 21, 2012 (midnight)
$unix_time = mktime(0,0,0,12,21,2012);
//Connect to MySQL
//"INSERT INTO table (target_timestamp) VALUES ($unix_time);"
//----- user goes to page -----
//Connect to MySQL
$sql = "SELECT target_timestamp FROM table WHERE foo = bar";
$unix_time = do_query($sql);//do_query not defined, assume it gets the timestamp
$current_time = time();
$diff = $unix_time - $current_time
//$diff should be positive and not 0
if( 1 > $diff ){
exit('Target Event Already Passed (or is passing this very instant)');
} else {
$w = $diff / 86400 / 7;
$d = $diff / 86400 % 7;
$h = $diff / 3600 % 24;
$m = $diff / 60 % 60;
$s = $diff % 60;
return "{$w} weeks, {$d} days, {$h} hours, {$m} minutes and {$s} secs away!"
}