如何在JS中转换为人类可读字符串时指定时间戳格式

时间:2017-04-07 11:53:09

标签: javascript unix-timestamp

我需要显示Google Analytics提供的时间戳中的格式化日期 标准解决方案如

var date = new Date(timestamp * 1000);
var formatted = date.toString();

产生错误的值Jan 01 1970。这是因为时间戳格式。

在PHP中,我可以指定时间戳格式:

\DateTime::createFromFormat('Ymd', $timestamp);

如何在JS中执行此操作?

3 个答案:

答案 0 :(得分:1)

由于您收到的日期格式为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()对象。 .toString()输出格式化为GMT时区的日期。要以本地时间格式输出,请改用pub unsafe fn from_raw_parts_mut<'a, T>(p: *mut T, len: usize) -> &'a mut [T] { mem::transmute(Repr { data: p, len: len }) }

答案 1 :(得分:0)

&#13;
&#13;
try this type:

var userDate = new Date();
var day = userDate.getDate();
var month = userDate.getMonth() + 1;
var year = userDate.getFullYear();
alert("Date Formate is :"+year+"-"+month + "-" + day);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

在javascript中,您可以使用moment.js

等外部库
var date = moment.unix(timestamp);
date.format("YYYY MM DD");

查看.format此处https://momentjs.com/docs/#/displaying/format/

的详细信息