![](/img/trans.png)
[英]Javascript Date object is different between Safari and Chrome
[英]Javascript Date object is different between Mac and PC
我遇到了一个奇怪的问题,这是一个更大的问题。 我将定义最初的问题(这不是真正的问题),然后再定义由它引起的问题。
我有一个javascript函数,它定义一个date变量并将其作为数据在post请求中发送给php函数:
var currentdate = new Date();
var showDailyEvents = function() {
$.post(
'/php/returnEvents.php',
{
myDate: currentdate,
period: "daily"
},
"html"
);
};
showDailyEvents();
当我在Mac(跨所有浏览器)上运行此代码时,当前日期是“ 2017年3月17日星期五15:37:29 GMT-0700(PDT)”。 但是,当我在PC(特别是Windows 7)上运行它时,当前日期是“ 2017年3月17日星期五15:37:29 GMT-0700(太平洋夏令时间)”。 当将此变量传递到php函数时,我尝试将其转换为时间戳,如下所示:
$startDay = strtotime($_POST['myDate']);
但是,当我检查该变量时,在Mac中为1489790249,而在PC上则为false。 两台计算机上变量之间的唯一区别是PDT vs太平洋夏令时间。
有没有人遇到这个问题? 或有任何想法如何适当地解决这个问题?
编辑:请注意,我需要日期的“星期五”部分
如果您坚持要传递日期/时间字符串,则可以使用具有显式格式的DateTime
:
<?php
$arr = array(
'Fri Mar 17 2017 15:37:29 GMT-0700 (PDT)',
'Fri Mar 17 2017 15:37:29 GMT-0700 (Pacific Daylight Time)'
);
foreach($arr as $val){
$d = DateTime::createFromFormat('D M d Y H:i:s O+', $val);
if($d !== false){
echo $val . ": " . $d->getTimeStamp() . "\n";
}
}
?>
这将产生:
Fri Mar 17 2017 15:37:29 GMT-0700 (PDT): 1489790249
Fri Mar 17 2017 15:37:29 GMT-0700 (Pacific Daylight Time): 1489790249
此处,格式规范中的+
表示将跳过其余输入,因此将忽略时区规范( O
)之后的所有内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.