【问题标题】:Check Existing Date object is in UTC - Javascript检查现有日期对象是否为 UTC - Javascript
【发布时间】:2012-11-06 09:22:23
【问题描述】:

我使用 Javascript 函数将日期转换为 UTC 日期,如下所示:

Date.prototype.convertToUTC = function () {
var month = this.getMonth();
var day = this.getDate();
var year = this.getFullYear();
return new Date(Date.UTC(year, month, day));
}

现在,当应用此函数的日期已经是 UTC 时,就会出现问题。由于我不知道用户是否会在 UTC/本地日期调用此方法,因此我想确保只有在不是 UTC 时才会发生转换。请帮忙。

【问题讨论】:

    标签: javascript date timezone


    【解决方案1】:

    JavaScript Date 对象具有 getTimezoneOffset() 方法。你可以用那个。或者使用getUTC* 方法:

     var d = new Date();
     var utcyear = d.getUTCFullYear();
    

    【讨论】:

      【解决方案2】:

      所有日期的核心都是UTC time value。在主机中创建的日期对象根据系统设置被赋予只读的timezone offset,使用getDategetHours 等读取的值基于该偏移量。

      如果您想要从纪元开始的 UTC 毫秒数,只需使用 getTime() 方法。或者,有 UTC 方法,getUTCDaygetUTCHours 等来构建您自己的格式化字符串。

      最后,toISOString 应该为 UTC 返回一个 ISO 格式的日期字符串,但不太旧的浏览器可能缺乏支持。

      一些例子

      为 2012-11-06T15:45:01Z 创建本地日期对象:

      var date = new Date(Date.UTC(2012, 10, 6, 15, 45, 1));
      

      从该(或任何)日期对象中获取 ISO 日期字符串:

      var isoString = date.toISOString();
      

      要获取以毫秒为单位的 UTC 时间值(自 1970-01-01T00:00:00Z 以来的毫秒数):

      var timeValue = date.getTime();
      

      将该时间值转换回本地日期对象:

      var date = new Date(timeValue);
      

      【讨论】:

        猜你喜欢
        • 2011-10-06
        • 2010-10-13
        • 2011-10-06
        • 1970-01-01
        • 1970-01-01
        • 2011-10-14
        • 2023-02-22
        • 2023-03-29
        • 2013-12-23
        相关资源
        最近更新 更多