来自 php unix 时间戳的 javascript 日期

标签 javascript php unix datetime

在数据库中,我有一行日期和时间,例如 2014-04-16 00:00:00 然后我使用该日期时间将其转换为 unix 时间戳

strtotime('2014-04-16 00:00:00') * 1000; // result 1397577600000

在 javascript 中,我尝试使用以下代码获取小时数

var d = new Date(1397577600000); // 1397577600000 from php unix timestamp in previous code
d.getHours(); // return 23
d.getMinutes(); // return 0

为什么 getHours() 返回 23 而不是 0? js时间戳和php时间戳有区别吗?

最佳答案

javascript 中的

Date 对象将始终根据浏览器的当前时区返回值。因此,如果 d.getHours() 为您返回 23,则表明您的本地浏览器时区比 UTC (-01:00) 早一小时。

如果您想要基于 UTC 时区的 Date 对象的小时数,您可以使用:

d.getUTCHours()

跟进:

只是抛出一些免费建议,您可以使用以下代码来处理从一个上下文到另一个上下文的日期值:

PHP:
// Fetched from the db somehow
$datetime_db = '2014-04-16 00:00:00';

// Convert to PHP DateTime object:
$datetime_obj = new DateTime($datetime_db, new DateTimeZone('UTC'));

// Format DateTime object to javascript-friendly ISO-8601 format:
$datetime_iso = $datetime_obj->format(DateTime::W3C);
Java脚本:
var d = new Date('2014-04-16T00:00:00+00:00'); // 2014-04-16T00:00:00+00:00 from PHP in previous code
d.getUTCHours(); // returns 0

这会在以该语言处理时以特定语言的对象格式保留日期时间变量,并将值序列化为所有当前浏览器/语言接受的字符串格式(国际标准 ISO-8601)。

关于来自 php unix 时间戳的 javascript 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28668141/

相关文章:

javascript - 无法在表情符号(跨度)后输入文本

javascript - 如何让子 div 用边距填充父 div 的空间?

java - JSON 解析问题未解决

php - 带中间件的 Laravel 5.2 嵌套路由组

linux - 仅在找到文件时创建 ZIP - 使用 shell 脚本

javascript - React 播放器缩略图

javascript - react ,获取错误 : Uncaught ReferenceError: require is not defined

php - codeigniter:更改 PHP 数组

c - 不完全是先进先出

linux - Rm 和 Egrep -v 组合