2012-09-13 54 views
0

我想在JavaScript中使用UTC創建日期,同時指定小時和分鐘,然後獲取它的時間戳。使用JavaScript創建UTC日期,添加一天,獲取unix時間戳

例如,如果我有15個小時和25分鐘,我這樣做:

var to_date = new Date(); 
to_date.setUTCHours(15); 
to_date.setUTCMinutes(25); 
var to_utc = new Date(to_date.getUTCFullYear(), 
       to_date.getUTCMonth(), 
       to_date.getUTCDate(), 
       to_date.getUTCHours(), 
       to_date.getUTCMinutes(), 
       to_date.getUTCSeconds()); 
var to_unix = Math.round(to_utc.getTime()/1000); 
console.log(to_unix); 

問題是,這似乎並沒有被返回正確的時間戳。它的時間不是UTC,而是我的時區。任何想法如何在UTC保持這一點?

如果超過當前時間,我還想添加一天的時間。我嘗試過檢查當前並添加60*60*24,但返回的分鐘數/小時與我指定的不符。

任何幫助將是偉大的!

謝謝使用你的代碼

+0

這個鏈接可以幫助你:http://stackoverflow.com/questions/221294/how-do-you-get-a-timestamp-in-javascript 。 – Anoop

回答

5

var d = new Date(); 
d.setUTCHours(15); 
d.setUTCMinutes(25); 
d.setUTCSeconds(0); 

d現在代表了當今15:25世界標準時間。

如果你是從頭開始:

var d = new Date(Date.UTC(year, jsmonth, day, utchour, utcminute, utcsecond)); 

要獲得UNIX時間戳,使用getTime,返回自新紀元UTC毫秒數,再除以1000轉換爲UNIX時間(這是在而不是毫秒):

Math.round(d.getTime()/1000); 

Date.now()給你,因爲以毫秒爲單位的時代在UTC當前時間。要添加的一天,看看它是否是未來:

d.getTime() + (1000*60*60*24) > Date.now() 
+0

我怎麼會納入,而能夠設置日期的小時/分鐘? – dzm

+0

對不起,我掠過,並認爲你只是想增加一天到目前的時間。更新。 – josh3736

+0

這樣做 - 謝謝! – dzm

1

請嘗試以下DEMO

爲了擺脫的時區,使用to_date.setHours(0,0,0,0);設置如果要與現有Date對象修修補補的時間00:00:00:00

+0

這似乎是做同樣的事情,如果我使用epochconverter,我得到'格林尼治標準時間:星期四,13九月2012 19:25:00 GMT''您的時區:星期四2012年9月13日15:25:00 GMT-4' ,GMT應該有15:25:00而不是我的時區。 – dzm

+0

請嘗試看看這篇文章以及:http://stackoverflow.com/questions/439630/how-do-you-create-a-javascript-date-object-with-a-set-timezone-without-using -as – Chase

+0

謝謝!這真的讓我瘋狂。 –

0

形式link:可以使用getTimezoneOffset()方法返回UTC時間和本地時間之間的時間差,以分鐘爲單位。 以下應解決您的問題

var to_unix = Math.round((Date.now() + (new Date().getTimezoneOffset()))/1000); 
console.log(to_unix); 

jsfiddle

+0

這沒有意義。 Date.now()總是以UTC來處理。 – josh3736