javascript - 正确格式化客户端 (javascript) 和服务器 (PHP) 之间的时间

标签 javascript php date datetime

我在 javascript 中有一个日期对象,如下所示:

var date = 2014-12-01T00:00:00.000Z

如果我这样做:

var date = new Date(date);
date.setUTCMonth(date.getUTCMonth()+1);

然后 toISOString() 方法显示期望值:

2015-01-01T00:00:00.000Z

但是当我通过 POST 将该日期时间字符串发送到 PHP 脚本并使用 DateTime 类将其解析回日期时,我得到了这个:

2014-12-31 19:00:00 -0500

我已经尝试使用 DateTimeZone 类设置时区并将时区设置为我自己的时区和 UTC,但不幸的是:

new DateTime($_POST['DateTime'],new DateTimeZone('America/Mexico_City'));
new DateTime($_POST['DateTime'],new DateTimeZone('UTC'));

有没有办法使用 Date 类在 javascript 中设置时区?还有另一种方法可以解决这个问题吗?我在处理时区方面的经验即使不是零,也很少。

更新:

根据 toISOString() 方法 (javascript),这是我的 ISO 格式的时间字符串:

2014-09-01T00:00:00.000Z

这里是我的 $_POST 变量的内容,根据 print_r():

Array (
    [DateTime] => 2014-09-01T00:00:00.000Z
)

这是我的格式化程序函数的输出,使用 '%c' 格式(es_MX 语言环境):

dom 31 ago 2014 19:00:00 CDT

以及提到的格式化函数:

function formatDate($date) {
    return utf8_encode(strftime('%c', $date->getTimestamp()));
}

最佳答案

我认为当您发送日期字符串时,它的格式会有所不同。至少当我测试它时,它按预期工作:

$a = new DateTime('2015-01-01T00:00:00.000Z');
echo $a->format('Y-m-d H:i:s'); // Outputs '2015-01-01 00:00:00'

Demo here .

关于javascript - 正确格式化客户端 (javascript) 和服务器 (PHP) 之间的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25669390/

相关文章:

javascript - 类型 'Group' 上不存在属性 'ForwardRefExoticComponent<InputProps & RefAttributes<HTMLInputElement>>'

PHP 脚本通过 Cronjob 在一台服务器上运行,但不在类似服务器上运行

linux - 如何从 shell 脚本中变量中存储的日期中减去年份?

javascript - moment js中的自定义长日期格式

javascript - 如何过滤json数据并显示在html页面上?

javascript - 如何从 Angular 中的另一个 Controller 内的 Controller 访问对象

javascript - 如何在安装时仅运行一次扩展代码

php - 在php中将(多维)数组推送到多维数组

php - 在 PHPSpreadsheet 上循环后添加单元格

linux - 处理 FTP 中的日期