2016-12-27 128 views
1

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

在这里,我通过日期2015年11月2日即2 2015年11月,然后将其转换为UTC格式,然后使用新日期 UTC正常日期,但现在它返回我11/1/2015即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); 
+1

你是否检查了下面的帖子。 http://stackoverflow.com/questions/948532/how-do-you-convert-a-javascript-date-to-utc – fubbe

+0

是日期太不同? –

+2

是11月2日还是2月11日?使用'2015-02-11'来消除混淆。 –

回答

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

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

这是因为它第一次的日期转换为长值以毫秒为单位,然后到日期,以便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); 
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.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));