繁体   English   中英

Mac和PC之间的Javascript日期对象不同

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM