0

作業を記録するために使用するスプレッドシートがあります。シートから日付の列を配列に読み取って、それらに対してアクション/計算を実行できるようにしました。デバッガーで、日付を保持する配列に日付値の異なる形式の値があることに気付いたので、これはうまくいきませんでした。たとえば、「16/11/2012」と表示されるものと ( new Date(1355184000000)) と表示されるものがあります。

それらをすべて統一された形式に変換して、それらを操作できるようにする方法を誰かが指摘できますか?

ありがとう

4

1 に答える 1

1

日付をどのように表示しますか? それらを「日付オブジェクト」または文字列にしますか? コードに表示する値 (new Date(1355184000000)) は次のものに対応しMon Dec 10 16:00:00 PST 2012 ます。Logger.log(new Date(1355184000000))

それどころか、"16/11/2012"おそらく日付ではなく文字列です... (注:あなたが英国にいるのをプロフィールで見たので、「日/月/年」の順序を使用しているのは奇妙です。mm/を使用すると思いました代わりに dd/yyyy) .

これらのアイテムに対していくつかの計算を行う必要があると言ったので、スクリプトで使用するには、すべてを日付オブジェクトに変換する必要があると思います。エラーを生成せずにこれを行う方法を正確に確認するには、日付オブジェクトに関するドキュメントを参照することをお勧めします。JavaScript の日付は常にhh:mm:ss およびミリ秒単位の日付と時刻であることを忘れないでください。表示された整数値は、1970 年 1 月 1 日からのミリ秒数でした ;-)
また、このフォーラムで日付を検索すると、非常に多くの興味深い情報を見つけることができます。

説明する小さな関数を次に示します。

function playWithTime(){
Logger.log('ref date = '+new Date(0))
var example = "june 30, 2013 23:59:00"
Logger.log(example+' = '+ new Date("june 30, 2013 23:59:00"))
Logger.log(example+' = '+ new Date("june 30, 2013 23:59:00").getTime()+' mS')
}

これは Logger に表示されます:

ref date = Thu Jan 01 1970 01:00:00 GMT+0100 (CET)
june 30, 2013 23:59:00 = Sun Jun 30 2013 23:59:00 GMT+0200 (CEST)
june 30, 2013 23:59:00 = 1372629540000 mS

ところで、ロガーは、タイムゾーンの夏時間に応じて、さまざまな方法で値を返すことに注意してください...私はベルギーにいて、6月は「夏」時間(CEST)です。また、Google サーバーのタイムゾーンである PDT または PST で表示することもできます。ロガーが一定であることに依存することはできません (!!) が、それは別の話です ;-)


編集:日付文字列が dd/mm/yyyy の形式である場合は、おそらく次のコードのように並べ替える必要があります。

function playWithTime2(){
Logger.log('original date string in UK format = 16/11/2012')
var d = "16/11/2012".split('/');
var d_ordered=d[1]+'/'+d[0]+'/'+d[2]
Logger.log('becomes '+d_ordered+' = '+new Date(d_ordered))
}

どちらが返されますか

original date string in UK format = 16/11/2012
becomes 11/16/2012 = Fri Nov 16 2012 00:00:00 GMT+0100 (CET)
于 2012-11-17T13:55:34.003 に答える