LANG SELRCT

コードを書く場所についてはこちら

2018年4月7日土曜日

JavaScriptで時間を設定する


西暦/月/日/時:分:秒:ミリ秒 を設定するコードの例

2020年1月2日3時4分5秒006ミリ秒を設定してログに出して
Google Apps Scriptでフォーマットしてみる



コード.gs
function set_datetime(){
  var date = new Date();  
  date.setFullYear(2020);
  date.setMonth(0);
  date.setDate(2); 
  date.setHours(3);
  date.setMinutes(4);
  date.setSeconds(5);
  date.setMilliseconds(6);
  Logger.log(date);
  Logger.log(format_date(date));
}

function format_date(date){
  return  Utilities.formatDate(date, 'Asia/Tokyo', 'yyyy/MM/dd/HH:mm:ss:SSS');
}
意訳
この機能がやること
現在日時を取得する
西暦を設定する
月を設定する(月は["Jan", "Feb", "Mar"..., "Dec"]の配列で、0はJan→日本語では1月)
日を設定する
時を設定する
分を設定する
秒を設定する
ミリ秒を設定する
dateをログに出す
フォーマットしたdateをログに出す


この機能がやること
dateを東京時間でミリ秒までフォーマットして返す




実行結果



補足


(以下、疑問に思ったことの備忘録)

setMonthだけなぜ 0 始まりなんだろう

上のコード.gsで疑問に思うのは月だけ 0 で始まる点

1月はsetMonth(0)
2月はsetMonth(1)
3月はsetMonth(2)
4月はsetMonth(3)
5月はsetMonth(4)
6月はsetMonth(5)
7月はsetMonth(6)
8月はsetMonth(7)
9月はsetMonth(8)
10月はsetMonth(9)
11月はsetMonth(10)
12月はsetMonth(11)


上のコード.gsの中の
var date = new Date()

Logger.log(date)
のログを見ると

Thu Jan 02 03:04:05 GMT+09:00 2020

このように「月」は「数値」ではなく 「Jan」 という「英語で1月」を表す「January」の略で、「日本語では1月」を表す「文字列」になっている

setMonthを使う場合は
["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
という文字列を要素に持つ配列があって
0番目はJan、11番目はDecを表すと考えたらよいのかも