ИМХО, когда вы думаете о сравнении времени, вы автоматически начинаете говорить о времени 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!"
}