2017-02-17 10 views
0

私は日付を保存する必要があります:2017年2月16日5PM HST。他のタイムゾーンで日付/時刻を保存するには

データベース(解析)は、JS Dateのみを受け入れます。そして、私のシステムのタイムゾーンはISTです。 JS Dateには、異なるタイムゾーンで保存する機能がありません。

これを解決するには、3つの変数を保存します。日付(計算、計算説明は以下)、タイムゾーンオフセット、タイムゾーン

日付はmoment.tz(DateObject, Timezone)を使用して変換されます。

しかし、toDate()関数を呼び出すと、ISTに戻ります。

さらに調べると、Momentオブジェクトには_dキーが見つかりました。このキーはISTで変換されたdatetimeを持つようです。

しかし、私はそれを動作させることができないようです。

ヒントは参考になります。

+1

「別のタイムゾーンで保存する」とはどういう意味ですか?タイムゾーンはプレゼンテーション層の関心事です。 「01:00 + 00:00」と「02:00-01:00」は同じ_time_であり、異なって提示される。特定の時点は、大きな整数(_timestamp_)を使用して表され、このタイムスタンプは保存する必要があります。このタイムスタンプを読み込んで再び使用する場合は、選択した任意のゾーンの観点からそのタイムスタンプを表示できます。 – Birchlabs

+0

コード化したコードスニペットを投稿できますか? – Sekar

+0

@ BirchlabsパーズサーバーはJS Dateのみを受け入れるため、タイムスタンプは保存できません。 「異なるタイムゾーンで保存する」とは、たとえば、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

あなたがここで答えをjsfiddle link

チェックにconsole.logである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); 

に追加するモーメントTZを使用する必要があります。

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