我需要显示 Google Analytics(分析)提供的时间戳中的格式化日期 标准解决方案如
var date = new Date(timestamp * 1000);
var formatted = date.toString();
产生错误值1970年1月1日
。这是因为时间戳格式的原因。
在 PHP 中我可以指定时间戳格式:
\DateTime::createFromFormat('Ymd', $timestamp);
如何在 JS 中执行此操作?
最佳答案
由于您收到的日期格式为 YYYYMMDD
,而不是 Unix
timestamp ,你可以通过以下方式解析它
使用 String.prototype.slice
提取年、月和日期.
var timestamp = '20170306',
year = parseInt(timestamp.slice(0, 4), 10),
month = parseInt(timestamp.slice(5, 6), 10),
day = parseInt(timestamp.slice(7, 8), 10);
// - 1 because the Date constructor expects a 0-based month
date = new Date(Date.UTC(year, month - 1, day)),
gmt = date.toGMTString(),
local = date.toString();
console.log('GMT:', gmt); // Mon, 06 Mar 2017 00:00:00 GMT
console.log('Local:', local);
这假设您使用的日期采用 UTC 格式(很可能是这样)。 Date.UTC
创建一个时间戳(自 Unix 纪元以来以毫秒为单位),然后将其输入到 new Date() 中,后者使用它来创建表示该时间的 Date 对象。 .toGMTString()
输出 GMT 时区格式的日期。要以本地时间格式输出,请改用 .toString()
。
关于javascript - JS中转换为人类可读字符串时如何指定时间戳格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43277458/