V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
sdjl
V2EX  ›  JavaScript

JS 的所有时间相关函数,有哪些函数不是本地时区?

  •  
  •   sdjl · 2023-02-13 12:39:04 +08:00 · 1462 次点击
    这是一个创建于 660 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在 JS 中,new Date()、getHours()、Date.now() 等几乎所有函数都是基于本地时区处理时间的。

    例如 new Date('2023-02-13 12:37:00') 返回的是中国时区的 12 点 37 分。

    那么有没有哪个或哪些函数,是基于 UTC 时区,而不是本地时区的呢?

    5 条回复    2023-02-13 20:11:29 +08:00
    Akitora
        1
    Akitora  
       2023-02-13 12:42:03 +08:00   ❤️ 1
    toISOString
    toGMTString
    Pastsong
        2
    Pastsong  
       2023-02-13 12:44:42 +08:00   ❤️ 1
    new Date('2023-02-13T12:37:00Z')
    thinkershare
        3
    thinkershare  
       2023-02-13 12:54:26 +08:00   ❤️ 1
    Date 内部实现是无时区的(UTC Unix Timestamp),只是大部分格式化转换为字符串的时候选择了本地时区。Intl.DateTimeFormat 可以实现时间格式化更好的方式。另外 JS 的时间 API 设计的非常辣鸡,不符合直觉,也没法保存时区信息,大部分时候都使用第三方库代替原生的 Date 类型。但 Date 的时间运算还是非常强大的。
    libook
        4
    libook  
       2023-02-13 14:33:27 +08:00   ❤️ 1
    Date 构造函数返回的是 Date 对象,Date 对象本身是无时区的,只有你格式化输出的时候才会按照时区进行转换,也就是说你 new Date('2023-02-13 12:37:00') 看到的实际上是 console 隐式格式化转换后的结果,如果是它原本的结果应该返回一个对象。

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date
    你可以去看 Date 的 API 文档,它的方法中带 UTC 的就是 UTC 格式,带 ISO 的就是 ISO 格式,带 Locale 就是本地化的格式。
    guzzhao
        5
    guzzhao  
       2023-02-13 20:11:29 +08:00
    new Date('2023-02-13')
    new Date('2023-02-13 ')
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1006 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:42 · PVG 05:42 · LAX 13:42 · JFK 16:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.