2016-12-05 17 views
1

私は、3つの入力、タイトル、開始日、終了日を持つ非常に単純なフォームを使用しています。私はカレンダーイベントを生成するために簡単なスクリプトを使用しようとしました。これは以下で見ることができます。日付形式のGoogleカレンダーイベントの問題

function onFormSubmit(e) { 
    var title = e.values[1]; 
    var start_time = new Date(e.values[2]); 
    var end_time = new Date(e.values[3]); 
    CalendarApp.createEvent(title, start_time, end_time); 
} 

私が持っている問題は、日付文字列は、英国のフォーマットであるとして12月5日とは対照的に、(例えば、2016年5月12日12時00分00秒)が5月12日などのイベントをログに記録されていることです。

私はこのすべてに慣れていないので、私が理解していないコードをコピーするだけでなく、わかりやすく簡単な解決策を探しています。

ありがとうございました。

答えて

0
function convertUKDateToUSDate(date) { 
    const arr = date.split('/'); 
    const temp = arr[0]; 
    arr[0] = arr[1]; 
    arr[1] = temp; 
    return arr.join('/'); 
} 

接頭辞「DD/MM /」の日付文字列を「MM/DD/YYYY」形式に変換します。 Splitは文字列を["DD"、 "MM"、 "YYYY HH:MM:SS"]のような配列に変換し、一時変数を使用して "MM"と "DD"を入れ替えますそれらを分割するために使用された同じ文字と一緒に。あなたは、このような最終onFormSubmit(e)になってしまいます:

明らか
function onFormSubmit(e) { 
    var title = e.values[1]; 
    var start_time = new Date(convertUKDateToUSDate(e.values[2])); 
    var end_time = new Date(convertUKDateToUSDate(e.values[3])); 
    CalendarApp.createEvent(title, start_time, end_time); 
} 

私はe.values[2]e.values[3]が文字列であると仮定しています。 Dateオブジェクトが既に存在する場合(または短くしたい場合)、Moment.js(Premier Dateオブジェクトライブラリ)format関数を使用してフォーマット間の変換を検討してください。とにかくモーメントを使うことをお勧めしますが、あなたはコピーの代わりに理解できるものがほしいと言いました。