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

How to specify timestamp format when converting to human readable string in JS

我需要根据 Google Analytics 提供的时间戳显示格式化日期 像

这样的标准解决方案
var date = new Date(timestamp * 1000);
var formatted = date.toString();

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

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

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

如何在 JS 中执行此操作?

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);

在 javascript 中,您可以使用外部库,例如 moment.js

var date = moment.unix(timestamp);
date.format("YYYY MM DD");

在此处查看有关 .format 的详细信息 https://momentjs.com/docs/#/displaying/format/

由于您收到的日期格式为 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()