2017-02-17 83 views
0

我需要保存日期:2017年2月16日5PM HST。如何在其他時區保存日期/時間

數據庫(Parse)只接受JS日期。而且,我的系統時區是IST。 JS日期不能保存在不同的時區。

爲了克服這個問題,我保存了三個變量。日期(計算,下面解釋的計算),時區偏移,時區

日期使用moment.tz(DateObject, Timezone)轉換。

但是,調用toDate()函數似乎將其更改回IST。

在進一步的檢查中,我發現了Moment對象的一個​​_d鍵,它似乎在IST中具有轉換日期時間。

但是,我似乎無法得到它的工作。

任何提示都會有幫助。

+1

你是什麼意思的「保存在不同的時區」?時區是表示層的關注點。 '01:00 + 00:00'和'02:00-01:00'是相同_time_,呈現不同。時間點使用大整數(_timestamp_)表示,並且此時間戳是您應該保存的內容。當你加載這個時間戳並且想再次使用它時:你可以從你選擇的任何區域的角度來呈現它。 – Birchlabs

+0

你能發佈你已經編碼的代碼片段嗎? – Sekar

+0

@Birchlabs我無法保存時間戳,因爲分析服務器只接受JS日期。 「保存在不同的時區」,這意味着我可能需要保存我選擇的日期,比如HST或PST。在更廣的範圍內,這意味着,它不會被保存在5 IST中,並根據其時區向用戶顯示日期。我需要存儲5個HST。讓我知道,如果我有道理。 – ankitjain11

回答

2

你是什麼意思「保存在不同的時區」?時區是表示層的關注點。 01:00+00:0002:00-01:00是同一時間,呈現不同。時間點用一個大的整數(時間戳)表示,這個時間戳是你應該保存的東西。

當你加載這個時間戳並且想再次使用它時:你可以從你選擇的任何區域的角度出現它。

//-- parsing the user input... 

// parse HST (Honolulu Standard Time) date-time 
var inputTime = moment.tz("February 16th, 2017 5PM", "MMMM Do, YYYY hA", "Pacific/Honolulu"); 

// in case you want to double-check that it parsed correctly 
var inputTimePrettyPrinted = inputTime.format(); // "2017-02-16T17:00:00-10:00" 

// grab timestamp 
var timestamp = +inputTime; 

//-- presenting the stored timestamp in Indian Standard Time... 

// install a timezone definition for Indian Standard Time 
moment.tz.add("Asia/Calcutta|HMT BURT IST IST|-5R.k -6u -5u -6u||-18LFR.k 1unn.k HB0 7zX0"); 
moment.tz.link("Asia/Calcutta|Asia/Kolkata"); 

var timePresentedInIndianTime = moment(timestamp).tz("Asia/Calcutta"); 

var indianTimePrettyPrinted = timePresentedInIndianTime.format(); // "2017-02-17T08:30:00+05:30" 
0

嘗試這樣:

var UTC = new Date(); 
var UTC = UTC.getTime() // Get UTC Timestamp 

var IST = new Date(date); // Clone UTC Timestamp 
IST.setHours(IST.getHours() + 5); // set Hours to 5 hours later 
IST.setMinutes(IST.getMinutes() + 30); // set Minutes to be 30 minutes later 

var EST = new Date(date); // Clone date 
EST.setHours(EST.getHours() - 4); // set EST to be 4 hour earlier 

您可以根據您的需要而改變。

0

您需要使用時刻TZ添加到HST

var now = new Date(); 
moment.tz.add('HST|HST|a0|0|'); 
console.clear(); 
var converted = moment(now).tz("HST").format(); 
console.log(now); 

console.log(converted); 

下面是答案jsfiddle link

檢查的console.log。

Fri Feb 17 2017 18:24:49 GMT+0530 (India Standard Time) //IST time 
2017-02-17T02:54:49-10:00 // HST Time 
相關問題