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

标签 javascript unix-timestamp

我需要显示 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/

相关文章:

javascript - 离散轴标记

javascript - Php/JQuery/Javascript - 选择父子依赖

javascript - 在悬停时添加/删除 z-index

javascript - 如何检查元素是否已存在于列表中

php - 如何比较来自mysql的两个时间戳值与php

javascript - Moment.js unix 时间戳与纪元时间戳不匹配

javascript - 如果在 x 秒后调用函数

Java 与 C# 毫秒时间戳生成

Java 将 19 位 Unix 时间戳转换为可读日期

mongodb:从 json 查询中的 ObjectID 中提取时间戳