2016-03-16 132 views
1

正如標題所述,我想要獲得特定時區一天的開始時間和結束時間,並將它們轉換爲utc時間。這是我執行的一部分:如何在javascript中指定時區的utc中獲取開始時間和結束時間?

//convert current local time to specified timezone time 
var converted = moment.tz(moment(), timezone).format("YYYY-MM-DD"); 
var full_format = "YYYY-MM-DD HH:mm:ss"; 

// get start time and end time in the timezone 
var start = converted + " 00:00:00"; 
var end = converted + " 23:59:59"; 

// how to convert them in utc time by momentjs or other methods? 
var utc_start_time = ? 
var utc_end_time = ? 

問題是如何將某個時區的時間轉換爲utc時間。或者還有其他任何體面的解決方案嗎?謝謝!

編輯:

我想出了一個辦法讓它自己這是不是相當不錯。

var converted = moment.tz(moment(), timezone).format("YYYY-MM-DD");   
var full_format = "YYYY-MM-DD HH:mm:ss"; 
var start = converted + " 00:00:00"; 
var end = converted + " 23:59:59"; 
var utc_start_time = moment(start).add(utc_offset * -1, 'hours').format(full_format); 
var utc_end_time = moment(end).add(utc_offset * -1, 'hours').format(full_format); 

有關改進的任何建議,歡迎提出。由於

+0

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

+0

你想要計算它們之間的差距嗎? – Zamboney

+0

問題與[如何將JavaScript日期轉換爲UTC?]不完全相同? ](http://stackoverflow.com/questions/948532/how-do-you-convert-a-javascript-date-to-utc)。處理時間不包含任何時區信息。 – ichbinblau

回答

2

取決於正是你想做的事:

// for the current day 
var start = moment.tz(timezone).startOf('day').utc(); 
var end = moment.tz(timezone).endOf('day').utc(); 

// for a specific moment (m) 
var start = m.clone().tz(timezone).startOf('day').utc(); 
var end = m.clone().tz(timezone).endOf('day').utc(); 

// for a specific calendar date 
var m = moment.tz(date, format, timezone); 
var start = m.clone().startOf('day').utc(); 
var end = m.clone().endOf('day').utc(); 

然後,您可以格式startend但是你用format功能一樣。

請記住,不是每一天都在每個時區的午夜開始,也不是所有當地的日子都有24小時。

+0

再次感謝您的回覆。它確實回答了我的問題。在問之前,我應該閱讀文檔。但是,您能否舉一個例子,說明在哪種情況下,一天不會在上午12點開始,也不會有24小時。 – ichbinblau

+1

有時區轉換的任何一天,尤其是那些與[夏令時](http://stackoverflow.com/tags/dst/info)相關的日子可能會有多於或少於24小時的本地時鐘。在午夜有向前移動的時區的時區將跳過午夜。巴西就是一個很好的例子。考慮一下[2016年10月16日,巴西聖保羅一日開始](http://www.timeanddate.com/time/change/brazil/sao-paulo?year=2016) –

相關問題