Googleアプリのスプレッドシートスクリプトで日付と時刻をマージする方法は?
-
27-09-2019 - |
質問
「DD/MM/YYYY」形式の日付列と、Googleアプリスプレッドシートの「HH:MM AM/PM」形式のタイム列があります。 APPスクリプトでは、これら2つの値をDateTimeとして結合したいと考えています。これどうやってするの?
例 - 日付:2010年13/12、時間:午後4時30分、DateTimeオブジェクトとして'13/12/2010 4:30 PM 'のような合計値を取得したいと思います。
GetYear、GetDay JS関数を使用して、日付と時刻を個別に解析しようとしました。使用して新しい日付を作成しました
new Date(year, month, day, hours, minutes)
しかし、何らかの理由で、「4:30」は1899年11月30日午前10時30分のような完全な奇妙な日付として示されています。年、日、月を正確に抽出できますが、数時間や分を抽出できます。
解決
私はこれに答えました これ Googleアプリフォーラムスレッド。
「最初に、日付と時刻の間に違いはありません(フォーマット以外)、それらはすべて日付オブジェクトです。現在、スプレッドシートの日付/時刻の値である数字は、以来の日数です。 「エポック」、したがって「時間」は実際には数字の小数の部分です。スプレッドシートで0(ゼロ)と入力してから、DateTime形式を選択すると、エポックは「12/30/1899 0です。 :00:00 "スプレッドシートの現在のタイムゾーン。つまり、異なるタイムゾーンで構成された異なるスプレッドシートでは、エポックが変わる可能性があります。それは私にとって非常に奇妙です。それは必ずしもこのようなものではありませんでしたが、Googleはこれがユーザーにとってより良いと考えているようでした。 /10 14:00 "スプレッドシートで、タイムゾーンを他のものに変更すると、日付/時刻は変更されません。新しいタイムゾーンで14:00になります。
ガスでは、エポックは「1/1/1970 0:00:00 GMT+0」です。したがって、エポックは異なり、おそらくタイムゾーンもそうです。これにより、ガスとスプレッドシートの間の動作日が完全に混乱します。ガスのエポックをテストするには、range.setValue(new Date(0))を実行します。 「