我正在使用自定义函数在CF8中创建时间戳。然后它通过查询字符串传递给PHP,并再次与当前时间戳(使用time())进行比较。由于CF8没有DateDiff()的内置毫秒选项,因此我在返回值的末尾附加了3个零(以秒为单位)。
但是,当我将它与PHP时间戳进行比较时,差异应该是几秒钟,但我想出了一个多小时的差异。
<cfscript>
function GetEpochTime() {
datetime = Now();
return DateDiff("s", "January 1 1970 00:00", datetime) & "000"; //zeroes padded for milliseconds
}
</cfscript>
<cfset foo = getepochtime() /> //Returns time stamp
为了便于参数,CF时间戳读取1323344375000.与PHP的戳记进行比较时,值为1323362710000,差值为18,555,000毫秒(超过300分钟)。已经过去的实时可能是2秒。
$php_ts = time() * 1000; //PHP timestamp is in seconds, too
$cf_ts = $_GET['coldfusion_timestamp'];
echo $ts_difference = ($php_ts - $cf_ts) / (1000 * 60); //Difference in minutes
我的转化失败在哪里?
答案 0 :(得分:2)
在GMT偏移的上下文中,您没有考虑服务器的本地时间。
将你的getEpochTime()修改为:
return DateDiff("s", DateConvert("utc2Local", "January 1 1970 00:00"), datetime) & "000";
资料来源:GetEpochTimeFromLocal()(Rob-Brooks Bilson)