2017-01-20 5 views
0

Googleカレンダーに追加する時間を変更し、サンアントニオの時間を変更します。私はISOフォーマットのstartDateとendDateを.toISOString()の助けを借りて変更していますが、私に間違った出力を与えています

値は(その関数のどこかから来ている)が与えられた:

/* 

eventDetail.eventTimings.startDate:"2017-04-14" 
eventDetail.eventTimings.startTime:"05:18:00" 
eventDetail.eventTimings.endDate:"2017-04-14" 
eventDetail.eventTimings.endTime:"17:18:00" 

*/ 

var startDateTime = new moment(eventDetail.eventTimings.startDate + " " + startT, 'yyyy-mm-dd H:mm:ss').toISOString().replace(/-|:|\.\d\d\d/g, ""); 

// Now startDateTime= "20170120T111800Z" 

// But it should be startDateTime= "20170414T051800Z" 

var endDateTime = new moment(eventDetail.eventTimings.endDate + " " + endT, 'yyyy-mm-dd H:mm:ss').toISOString().replace(/-|:|\.\d\d\d/g, ""); 

// endDateTime="20170120T231800Z" 

// But it should be endDateTime=20170414T171800Z 

は、スナップショットを参照してください:

enter image description here

答えて

1

フォーマットモーメントのトークン(および他のほとんどのライブラリを、プラットフォーム、言語など)は大文字と小文字が区別されます。

yyyy-mm-dd H:mm:ssを使用しました。 YYYY-MM-DD HH:mm:ssを使用してください。

また、ここではtoISOStringまたはreplaceを使用するのではなく、モーメントのformat関数を使用してください。

var startDateTime = new moment(
        eventDetail.eventTimings.startDate + " " + startT, 'YYYY-MM-DD HH:mm:ss') 
       .format('YYYYMMDD[T]HHmmss'); 

また、現地時間とUTCの間で変換するかどうかを決定する必要があります。上記の関数では、両方が同じローカルタイムゾーンにあるため、入力と出力が一致します。出力はUTCではないため、出力にはZはありません。あなたはそれがUTCに変換したい場合

、あなたはこれを行うだろう:

var startDateTime = new moment(
        eventDetail.eventTimings.startDate + " " + startT, 'YYYY-MM-DD HH:mm:ss') 
       .utc() 
       .format('YYYYMMDD[T]HHmmss[Z]'); 
+0

こんにちは@Mattジョンソン、Thankuそんなに。それは私のために働く。 ありがとうございました。 :) –

+0

こんにちはマット、 あなたは私がstartDateTimeとendDateTimeをGoogleカレンダーに送信しているときにそれを助けてくれますか?それはうまく動作しますが、私はこのstartDateTimeとendDateTimeをカレンダーに追加するためにyahooカレンダーに送りますendTimeを除くすべての値は正しいです。あなたは私を同じように助けてくれますか? –

+0

コメントで新しい質問をしないでください。最初に検索し、必要な場合は新しい質問を投稿してください。 –

関連する問題