当前位置:  开发笔记 > 编程语言 > 正文

在PHP5和Actionscript3中获取unix时间戳(以毫秒为单位)

如何解决《在PHP5和Actionscript3中获取unix时间戳(以毫秒为单位)》经验,为你挑选了4个好方法。

在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小时内无法接受答复.



1> jitter..:

对于actionscript3,new Date().getTime()应该工作.


在PHP中,你可以简单地调用time()来获得自1970年1月1日00:00:00 GMT以来的时间.如果你想要几毫秒就可以了(time()*1000).

如果你使用microtime()将第二部分乘以1000得到毫秒.将第一部分乘以1000得到毫秒数并将其舍入.然后将两个数字加在一起.瞧.


时间()*1000是一个可怕的答案:-(
时间()*1000不会返回零作为最后3位数?
是的,它会的.使用time()可以获得精确到秒的时间.如果你真的需要毫秒的实际值,那么使用microtime

2> Tom..:

我使用无符号整数作为函数的返回类型.这应该是数字.

public static function getTimeStamp():Number
        {
            var now:Date = new Date();
            return now.getTime();
        }

我认为我现在获得了PHP5中获得毫秒的功能.

function msTimeStamp() {
    return round(microtime(1) * 1000);
}


两个都正确...但你自己和别人一个忙,并在PHP中将其改为microtime(true)...当然1可行,但参数应该是一个布尔值,因为语义...它真的更好阅读...为他人,或在几年内为自己...... :)

3> bob..:

将时间戳标准化为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;
    }
}



4> 小智..:

用这个:

intval(microtime(true)*1000)

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有