2017-03-08 52 views
1

我有問題與助推器datepicker。我的問題在這樣的例子js時區 - 不正確的一天得到

var array = [2017, 12, 27]; 
var date = new Date(array); 
console.log(date); 
//Wed Dec 27 2017 00:00:00 GMT+0300 (RTZ 2 (winter)) 
var day = date.getUTCDate(); 
console.log(day); 
//26 -> I WANT 27 
console.log(month); 
//11 -> I WANT 12 
console.log(year); 
//2017 

正如你可以看到底的核心,我得到26(一天我需要的是27)和11(每月我需要的是12)。 我怎樣才能改變這種代碼(刪除我的時區),以獲得27,12,2017年

+1

這不是你遇到的問題,但請注意'Date'構造函數不接受數組。所以這個數組被轉換成了一個字符串,這意味着你真的在做'new Date(「2017,12,27」)' - 這不是該規範所支持的格式(我很驚訝,實際上,它可以在Chrome上運行)。如果你有這樣的部分,使用多參數'Date'構造函數:'new Date(2017,12 - 1,27)'。但是,這不是問題。這可能是* next *問題。 :-) –

+0

'month'和'year'從哪裏來? –

+0

它是可編輯的日期選擇器的js小部件 –

回答

1

有你正在運行到兩個問題:

  1. 你的時區之間的差異(GMT + 0300) UTC表示您所在時區的2017年12月27日午夜時間爲晚上9點。 12月第26日 2017 UTC。

  2. 我假設你通過getUTCMonth得到month。月值從0開始=一月,這就是爲什麼你得到11

要獲得午夜2017年12月27日在Date,使用Date.UTC

var dt = new Date(Date.UTC(2017, 12 - 1, 27)); 
 
console.log(dt.getUTCDate());  // 27 
 
console.log(dt.getUTCMonth() + 1); // 12 
 
console.log(dt.getUTCFullYear()); // 2017

請注意在getUTCMonth之後的+ 1,因爲月份數字爲0 = 1月至11月= 12月。

+0

那麼我該如何決定第一個問題呢? –

+0

@johnwwwin:我不明白你的意思。以上處理這兩個問題。 –