2012-01-12 74 views
1

我想创建一个JavaScript倒数计时器;如何更改未来的Unix时间戳到秒剩余

我有一个格式为YYYY-MM-DD HH:MM:SS的字符串。

这可能是任何时间长达6个月在未来。

从现在到未来的时间,几秒钟内完成剩余时间的最佳方法是什么?这可以用PHP实现。

在此先感谢!

回答

1

在PHP中您可以使用strtotime,这需要一个日期的字符串表示,并返回Unix时间戳。

然后使用microtime获取当前的unix时间戳,并找出差异。这将是剩余的毫秒数,所以将其除以1000以在几秒内得到它。

http://php.net/manual/en/function.strtotime.php
http://php.net/manual/en/function.microtime.php

这应该工作:

$currentTime = explode(" ", microtime()); 
$currentTime = $currentTime[1]; 
$futureTime = strtotime("YYYY-MM-DD HH:MM:SS"); // insert your date here 
$timeRemaining = ($futureTime - $currentTime)/1000; 
1

你如何得到这个基于字符串的时间戳?一个unix时间戳实际上已经是“自1970-01-01 00:00:00以来的秒数”。这看起来像一个本地的MySQL日期字符串。

如果它来自MySQL,您可以将它转换为一个带有UNIX_TIMESTAMP()的unix样式时间戳,例如,

SELECT unix_timestamp(datetimefield) ... 

,然后将其转换为一个Javascript时间戳通过乘以1000(JS时间戳具有相同的时代,但以毫秒为单位)。

如果你被困在PHP中,你可以去快速/污垢与

$timestamp = strtotime($time_string); 
$js_timestamp = $timestamp * 1000; 
+0

感谢您的帮助,我在做什么是设置,我在我的网站上投放的比赛截止日期。我以与unix时间戳相同的格式将值输入到mysql表中 – user866190 2012-01-12 19:42:41

+0

unix时间戳只是一个数字:自1月19日以来的秒数。例如现在,当我输入这个时,我的本地机器上的unix时间戳是1326397358。 – 2012-01-12 19:43:53

+0

@ user866190通常,您只需将数字存储在数据库中,而不是其字符串表示形式。你能做到这一点吗?还是你坚持使用遗留代码/现有记录? – Matt 2012-01-12 19:51:53