Javascript日期UTC问题

时间:2016-12-27 10:26:38

标签: javascript date datetime utc

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

这里我将通过2015年11月2日的日期,即 2015年11月2日,然后将其转换为UTC格式,然后使用新日期将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);

4 个答案:

答案 0 :(得分:1)

getDay()方法未返回当月的某一天,请参阅js Date.getDay() 所以,您需要通过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);

Items

答案 1 :(得分:0)

我用过

  

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);

答案 2 :(得分:0)

这是因为它首先将日期转换为long值,以毫秒为单位,然后转换为日期,因此可以将11月11日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);

答案 3 :(得分:0)

  

这里我试图将日期转换为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.getUTCHours myDateObj.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));