【问题标题】:How to get correcta date (from my timezone)?如何获得正确的日期(从我的时区)?
【发布时间】:2021-03-11 08:10:22
【问题描述】:

我正在尝试构建将我当前日期转换为 URL 路径的代码:

var d = new Date();
var month = String(d.getMonth() + 1);
var day = String(d.getDate());
if (month.length < 2) month = '0' + month;  
if (day.length < 2) day = '0' + day;
var year = String(d.getFullYear());
var path = year + "/" + month + "/" + day + "/"+ year + month + day + ".html";

resolve(path);

运行时,代码可以运行,但有时会从第二天返回一个 URL。我猜这与时区有关:我的时区是 -3,我猜代码运行 UTC?那有意义吗?我该如何解决这个问题?

非常感谢您的帮助!

【问题讨论】:

  • 您使用的函数都是基于本地值,因此不是 UTC,除非您的系统时钟设置为 UTC。
  • 这段代码是在浏览器中运行还是在您的服务器(Node.js)上运行?

标签: javascript date time timezone timezone-offset


【解决方案1】:

您可以使用Luxon轻松做到这一点

const dt = luxon.DateTime.fromObject({zone: 'America/Chicago'});

dt.toLocaleString();

【讨论】:

    【解决方案2】:

    您可以通过获取 UTC 数据来消除过时的猜测。使用这样的东西 -

    var d = new Date();
    var month = String(d.getUTCMonth() + 1);
    var day = String(d.getUTCDate());
    if (month.length < 2) month = '0' + month;  
    if (day.length < 2) day = '0' + day;
    var year = String(d.getUTCFullYear());
    var path = year + "/" + month + "/" + day + "/"+ year + month + day + ".html";
    
    resolve(path);
    

    这样,您的所有计算都将与 UTC 相关,并且无论您的时区或夏令时如何,您都将始终获得准确的日期。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-20
      • 2011-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多