在Actionscript中,Unix时间戳(以毫秒为单位)可以这样获得:
public static function getTimeStamp():uint { var now:Date = new Date(); return now.getTime(); }
该文件明确指出以下内容:
getTime():Number返回Date对象自1970年1月1日午夜(通用时间)以来的毫秒数.
当我跟踪它时,它返回以下内容:
824655597
所以,824655597/1000/60/60/24/365 = 0.02年.这显然是不正确的,因为它应该是大约39年.
问题1:这里有什么问题?
现在,在PHP部分:我正在尝试以毫秒为单位获取时间戳.该microtime()
函数返回字符串(0.29207800 1246365903)或浮点数(1246365134.01),具体取决于给定的参数.因为我觉得时间戳很简单,所以我自己会这样做.但是现在我已经尝试并注意到了这个浮点数,并将它与我在Actionscript中的问题结合起来,我真的不知道.
问题2:如何让它返回Unix时间戳中的毫秒数?
时间戳应该很容易,我可能会遗漏一些东西......对不起.提前致谢.
编辑1:自己回答了第一个问题.见下文.
EDIT2:我自己也回答了第二个问题.见下文.48小时内无法接受答复.
对于actionscript3,new Date().getTime()
应该工作.
在PHP中,你可以简单地调用time()来获得自1970年1月1日00:00:00 GMT以来的时间.如果你想要几毫秒就可以了(time()*1000)
.
如果你使用microtime()将第二部分乘以1000得到毫秒.将第一部分乘以1000得到毫秒数并将其舍入.然后将两个数字加在一起.瞧.
我使用无符号整数作为函数的返回类型.这应该是数字.
public static function getTimeStamp():Number { var now:Date = new Date(); return now.getTime(); }
我认为我现在获得了PHP5中获得毫秒的功能.
function msTimeStamp() { return round(microtime(1) * 1000); }
将时间戳标准化为Javascript,Actionscript和PHP之间的毫秒数的整数
Javascript/Actionscript:
function getTimestamp(){ var d = new Date(); return Date.UTC(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds()).valueOf(); }
PHP:
function getTimestamp(){ $seconds = microtime(true); // true = float, false = weirdo "0.2342 123456" format return round( ($seconds * 1000) ); }
请参阅PHP文章"ben at sixg dot com"的评论:http://www.php.net/manual/en/function.gmmktime.php
EXCERPT:对于大多数意图和目的,您可以想象mktime()首先将输入参数转换为GMT,然后调用生成GMT时间戳的gmmktime().
所以,time()总会在世界任何地方的同一个实际时刻返回相同的东西.
gmmktime()和mktime(),当给定特定的时间参数时,在计算适当的时间戳之前,将这些时间参数从适当的时区(gmmktime的GMT(),mktime()的本地时间)转换.
在某些版本的PHP上,带有毫秒的时间戳太大而无法显示为字符串.所以使用sprintf函数来获取字符串值:
PHP
function getTimestamp($asString=false){ $seconds = microtime(true); // false = int, true = float $stamp = round($seconds * 1000); if($asString == true){ return sprintf('%.0f', $stamp); } else { return $stamp; } }
用这个:
intval(microtime(true)*1000)