如何将角度 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 时间戳转换为本地时间戳? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
在 VBA 中,如何以简单的方式将 UTC UNIX 时间戳转换为本地时区日期?