2016-04-07 69 views
0

我正在使用一些不會按字符串值排序對象的庫,但會按日期對它們進行排序。我有幾個月像'2008-04',我應該能夠將它們轉換爲相應月份的第一個Javascript日期。但我的本地時區螺絲釘的事情了:將月份字符串轉換爲日期

new Date('2008-04') 
Mon Mar 31 2008 20:00:00 GMT-0400 (EDT) 

這可能是How do you convert a JavaScript date to UTC?重複,但也許有我的具體使用情況比那些有一個簡單的答案嗎?

BTW,我通過指定的第一個月得到同樣的答案:

new Date('2008-04-01') 
Mon Mar 31 2008 20:00:00 GMT-0400 (EDT) 

我使用ES6。我不認爲這更簡單嗎?

+0

你可以看看一些生產就緒的文庫,像http://momentjs.com/ - 也許它已經 – llamerr

+0

解決了這個問題呀,我以前用過時間。這對於解決一個我懶得在5行javascript中解決的小問題來說非常重要。 – Sigfried

+0

[你如何將JavaScript日期轉換爲UTC?](http://stackoverflow.com/questions/948532/how-do-you-convert-a-javascript-date-to-utc) – Sigfried

回答

1

添加'-01T00:00:00Z'字符串與ISO 6801日期的一部分:

document.write(new Date('2008-04' + '-01T00:00:00Z'));

+0

'new日期('2008-04-01') - > 2008年3月31日星期一20:00:00 GMT-0400(美國東部時間)' – Sigfried

+0

您的編輯仍然給3月31日。 – Sigfried

+0

您可以將日期字符串視爲排序。 iso日期總是本地化的,並且取決於yout時區,您可以獲得過去的日期。但是你可以用這個日期來排序,因爲每個日期的錯誤總是一樣的。 –

0

我誤解。日期已經是UTC,只是當我將它顯示爲本地字符串並將其轉換爲本地時區時。所以答案就是

new Date('2008-04').toUTCString() 
"Tue, 01 Apr 2008 00:00:00 GMT" 

new Date('2008-04').toISOString() 
"2008-04-01T00:00:00.000Z"