2017-10-27 5 views
1

米国中部標準時(CDT)の日付時間(金曜日、10月27日2017 4:00:00 AM)があります。私はこの日付時刻を異なる時間帯に変換したい。これらは私が変換したいタイムゾーンです。米国中部標準時から瞬間を使用して異なる時間帯に変換JS

Eastern Time (EDT) 
Pacific Time (PDT) 
New Delhi, India (IST) 
Central Europian Time (CET) 
Riyadh, Saudi Arabia (AST) 
Pakistan Standard Time (PKT) 
Lagos, Nigeria (WAT) 
Australian Standard Time (AET) 
Greenwich Mean Time (GMT) 
Moscow, Russia (MSK) 
China Standard Time (CST) 

これは私が

var dateTime = moment.tz("2017-10-27 4:00:00 AM", "America/Chicago"); 
var IST = dateTime.tz('Asia/Calcutta').format('MMMM Do YYYY, h:mm:ss a'); 
console.log(IST) // October 27th 2017, 9:30:00 am 

をやって返さ日付時刻が間違っているかです。 インド標準時はセントラルタイムよりも10時間30分遅いのでです。

それは2017年10月27日(金曜日)14:30(IST)

感謝する必要があります!

+0

これまでのところこれまで試したことはありますか?あなたは中央の時間に値を解析してから、https://momentjs.com/timezone/docs/#/using-timezones/converting-to-zone/に従って 'tz'ミューテータを呼び出すように思えます。 –

+0

var dateTime = moment.tz( "2017-10-27 4:00:00 AM"、 "America/Chicago"); var IST = dateTime.tz( 'Asia/Calcutta')。形式( 'MMMMはYYYY、hはmm:ss a'); console.log(IST)// 2017年10月27日、午前9:30:00 このコードは正しいですか?それは実際には正しくありません。 – Mohanraj

+1

あなたの質問を**編集して、あなたが試したこと、そしてあなたが何を持っているのかを見せてください。 –

答えて

4

問題は、インドのタイムゾーンへの変換ではなく、シカゴ時間の元の解析です。

この:

var dateTime = moment.tz("2017-10-27 4:00:00 AM", "America/Chicago"); 

... UTC午前4時として扱われ、その後、アメリカ/シカゴに変換し、それはシカゴで(10月26日)23時現地時間を表す終わるされます。 dateTimeの値を記録するだけでそれを見ることができます。

あなたにコードを変更した場合:

var dateTime = moment.tz("2017-10-27 04:00:00", "America/Chicago"); 

...私はあなたが期待信じるものである、27日午前4時現地時間として扱われます。アジア/カルカッタへの変換の結果は、あなたが期待したように午後2時30分です。

入力の形式を変更するには、またはのいずれかの形式を指定します。たとえば、これも問題なく動作します。

​​
+0

答えの最後の部分の形式パラメータは、 "yyyy-MM-DD h:mm:ss a" 'ではなく、" YYYY-MM-DD h:mm:ss A "'でなければならないと思います。小文字の 'yyyy'トークンではありません。 – VincenzoC

+0

@VincenzoC:ありがとうございました。 –

+0

@JonSkeet素晴らしい!今はうまくいく。どうもありがとう。 – Mohanraj

関連する問題