如何将角度 UTC 时间戳转换为本地时间戳? [复制]

Posted

技术标签:

【中文标题】如何将角度 UTC 时间戳转换为本地时间戳? [复制]【英文标题】:how to convert angular UTC timestamp to local timestamp? [duplicate] 【发布时间】:2017-08-11 05:07:36 【问题描述】:

有没有将UTC时间戳转换为本地时间时间戳的函数或方法?

我将时间戳传递给角矩,但来自服务器的时间戳是 UTC。

【问题讨论】:

UTC 时间戳是什么样的? 【参考方案1】:

目前尚不清楚问题是关于解析还是格式化,或两者兼而有之,或者您是否只需要 angular.js 或 ionic-framework 中的函数。以下是纯 ECMAScript。

是否有将UTC时间戳转换为本地时间时间戳的功能或方法?

是的,但这取决于时间戳是什么。如果它是 ISO 8601 扩展格式的字符串,例如“2017-03-20T15:45:06Z”,那么在现代浏览器中,它可以由内置解析器使用 Date 构造函数(以创建 Date 对象)或 Date 进行解析。解析(生成时间值)。

如果是其他格式,则应手动解析,使用小函数或库。

一旦有了 Date 对象,就可以使用 Date 方法在主机时区中对其进行格式化,请参阅 Where can I find documentation on formatting a date in javascript?

例如

var s = "2017-03-20T12:00:00Z"
var d = new Date(s);

// Browser default, implementation dependent
console.log(d.toString());

// Use toLocaleString with options, implementation dependent and problematic
console.log(d.toLocaleString(undefined,
  weekday: 'long',
  day: 'numeric',
  month: 'long',
  year: 'numeric',
  hour: '2-digit',
  hour12: false,
  minute: '2-digit',
  second: '2-digit'
));

【讨论】:

【参考方案2】:

请注意,JavaScript 时间戳(即从 Date.now()date.getTime() 检索的值)没有与之关联的时区。它只是自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的毫秒数。在 JavaScript 中,没有 local 时间戳这样的东西。要将时间戳转换为使用机器本地时区的日期,您只需执行以下操作:

let myTimestamp = Date.now();
let dateInLocalTimezone = new Date(myTimestamp);

【讨论】:

你是对的。我的术语有点松散。我会在上面更正。 JavaScript 时间戳就是自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的毫秒数。没有与之关联的时区。我会修正我的答案。

以上是关于如何将角度 UTC 时间戳转换为本地时间戳? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

将UTC时间戳转换为熊猫中的本地时区问题

在 VBA 中,如何以简单的方式将 UTC UNIX 时间戳转换为本地时区日期?

如何在 SAP SQL Anywhere 中将 UTC 时间戳转换为命名时区?

无法在模板中将 UTC 时间戳转换为本地时间

Debezium 时间戳问题,无法转换为本地时区

如何将特定时间转换为UTC时间戳[重复]