【问题标题】:Javascript Date UTC issueJavascript日期UTC问题
【发布时间】:2016-12-27 10:26:38
【问题描述】:

在这里,我尝试将 日期转换为 UTC,然后将相同的 UTC 日期 转换为新日期。但问题是我没有得到我通过的相同日期。这是我的fiddle

我在这里传递日期 2015 年 11 月 2 日,即 2015 年 11 月 2 日,然后将其转换为 UTC 格式,然后使用 new Date 将 UTC 转换为正常日期,但现在它2015 年 11 月 1 日返回我,即 2015 年 11 月 1 日

提前致谢。

var myDate = '11/2/2015';
var myDateObj = new Date(myDate);
console.log('my Date is \n' + myDateObj);

var tempDate = Date.UTC(myDateObj.getFullYear(),myDateObj.getMonth(),myDateObj.getDay());
var utcDate = new Date(tempDate);

console.log('my Date after utc \n' + utcDate);

【问题讨论】:

标签: javascript date datetime utc


【解决方案1】:

getDay() 方法不返回月份中的某一天,更多信息请参见 js Date.getDay() 因此,您需要通过 getDate() 获得的月份中的某一天,而不是那样,在 getDate() 上查看更多信息

var myDate = '11/2/2015';
var myDateObj = new Date(myDate);
console.log('my Date is \n' + myDateObj);

var tempDate = Date.UTC(myDateObj.getFullYear(),myDateObj.getMonth(),myDateObj.getDate());
var utcDate = new Date(tempDate);
console.log('my Date after utc \n' + utcDate);

【讨论】:

    【解决方案2】:

    我用过

    myDateObj.getDate()

    它工作正常,请立即检查。

    var myDate = '11/02/2015';
    var myDateObj = new Date(myDate);
    console.log('my Date is \n' + myDateObj);
    console.log('my Date is \n' + myDateObj.getDate());
    
    var tempDate = Date.UTC(myDateObj.getFullYear(),myDateObj.getMonth(),myDateObj.getDate());
    var utcDate = new Date(tempDate);
    
    console.log('my Date after utc \n' + utcDate);
    

    【讨论】:

      【解决方案3】:

      发生这种情况是因为它首先将日期转换为长值(以毫秒为单位),然后转换为日期,因此 11 月 2 日 00:00:00 它可以作为 11 月 1 日 23:30:00,因此您也可以在日期中给出时间如下:

      var myDate = '11/2/2015 23:00:00';
      var myDateObj = new Date(myDate);
      console.log('my Date is \n' + myDateObj);
      
      var tempDate = Date.UTC(myDateObj.getFullYear(),myDateObj.getMonth(),myDateObj.getDay(),myDateObj.getHours(),myDateObj.getMinutes(),myDateObj.getSeconds());
      var utcDate = new Date(tempDate);
      console.log('my Date after utc \n' + utcDate);
      

      【讨论】:

        【解决方案4】:

        在这里,我尝试将日期转换为 UTC,然后将相同的 UTC 日期转换为新日期。但问题是我没有得到我通过的日期。

        所有 Date 对象都使用一个 UTC 时间值,因此它们本质上都是 UTC,无需将它们“转换”为 UTC。

        var myDate = '11/2/2015';
        var myDateObj = new Date(myDate);
        console.log('my Date is \n' + myDateObj);
        

        您不应使用 Date 构造函数(或 Date.parse)来解析字符串、编写小函数或使用库(例如 moment.jsfecha.js)。

        以下内容(将 getDay 替换为 getDate):

        var tempDate = Date.UTC(myDateObj.getFullYear(),
                                myDateObj.getMonth(),
                                myDateObj.getDate());
        

        只是复制日期的一种冗长方式。使用起来更简单:

        var tempDate = new Date(myDateObj);
        

        如果要获取 UTC 日期值,请使用 UTC 方法,例如 myDateObj.getUTCHoursmyDateObj.getUTCMinutes 等。

        如果要获取 UTC 日期和时间,请使用 toISOString,它返回偏移量为 0000 的值:

        // Create a Date for 2 November, 2016
        var date = new Date(2016,10,2);
        
        // Copy it
        var dateCopy = new Date(date);
        
        // Show local date and time
        console.log('Local date and time:\n' + dateCopy.toString());
        
        // Show UTC date and time
        console.log('UTC date and time  :\n' + dateCopy.toISOString());
        
        // Show UTC Date only
        console.log('UTC date only      :\n' + dateCopy.toISOString().substr(0,10));

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多