問題は、あなたが思っている場所ではありません...
javascript には「時間」の値も「日付」の値もありません。日付オブジェクトは、視覚化の方法に関係なく、常に日、月、年、時、分、秒、およびミリ秒の完全な日付です。
表示する値は、常に完全な日付オブジェクトを表示するロガーから取得されます。値は有効な日付を定義していないため、0、つまりスプレッドシートの基準日と見なされます。スプレッドシートのセルに 0 を入力し、数値形式を強制的に日付にすることを確認するには、次のようになります。30/12/1899 00:00:00
それは理由を説明するので、答えの一部を提供します...今あなたの質問に答えて答えを提供するには、これを乗り越えるためのいくつかの可能な方法があります.
最も簡単な方法は、単純な数式を使用する 3 番目のセルを作成して、スプレッドシート レベルで 2 つのセルを 1 つに結合することです。
に日付と時刻があることを考慮A1
しB1
て、数式で C1 を作成します=A1+B1
それは簡単でしたが、余分なセルを持ちたくないかもしれません...最終的には(単純な)追加を行う非表示のセルを使用し、スクリプトに他の2つのセルの代わりにそのセルを読み取らせることができます...
もう 1 つの可能性は、スクリプト自体にこの追加を行うことです。ここでは、可能な限り明確にするための段階的なプロセスを含むスクリプトを示します。
function myFunction() {
var sh = SpreadsheetApp.getActive();
var day = new Date(sh.getRange('A1').getValue());
var time = new Date(sh.getRange('B1').getValue());
var hour = time.getHours();
var min = time.getMinutes();
Logger.log(day+' + '+time+' '+hour+':'+min+' = '+ new Date(day.setHours(hour,min,0,0)));
}
ロガーの結果: (ベルギー時間)
[13-06-21 17:16:19:071 CEST] Fri Dec 27 2013 00:00:00 GMT+0100 (CET) + Sat Dec 30 1899 20:30:00 GMT+0100 (CET) 20:30 = Fri Dec 27 2013 20:30:00 GMT+0100 (CET)