0
0

日付や時間をうす〜く扱う~JavaScript編

Last updated at Posted at 2024-07-18

この記事のを書くきっかけ

「日付や時間の取り扱いについてうす〜く調べてみた〜その1」の続きです。
あれ、タイトル変わっちゃった。
計画立ててやらないといかんすね。汗

そう、時間を扱うことがあって、少し苦労したので最小限必要なことを抜き取ってみました。

なぜ薄く・・・なのか

これ、前回、書き忘れました。
理由は簡単。「忘れるもん
細かく書いても読まないし、細かく理解しても忘れる。
繰り返せば覚えるんだけど、いや、日付や時間だけをずっと扱うことも少ない。
なので、「ああ、そんな感じだよね〜」っと理解できる程度にうす〜く扱っていきたいと思います。

公式というか、MDN

これは抑えておかねばならん。

復習

MDNを読むとわかりますが、1970年1月1日の0時0分0秒を基準にしてm秒単位でカウントアップしたものがシリアル値になります。



今の日付時刻を取得するもっともん簡単な方法

let now = Date();
console.log('今の時間',now)

出力

今の時間 – "Thu May 09 2024 12:40:41 GMT+0900 (日本標準時)"

実はこれって結構落とし穴になりました。
とにかく、今の時間を出したい時はいいと思うけど、これでなくてもいい。



let now = new Date();
console.log('今の時間2', now)

これは新しくコンストラクタを立ち上げる方法。newがあるかどうかだけが違い。

出力は同じ

今の時間2 – "Thu May 09 2024 12:40:41 GMT+0900 (日本標準時)"


特定の日時を指定したい

ISO8601の拡張形式で指定しましょう。
new Dateの引数に入れて表示します。

date_str1 = '2024-02-01T08:21:15Z'
let date1 = new Date(date_str1)
console.log('date1',date1)

日本時間で表示されました。あれ?+9時間。そうそう、指定した文字列の最後にZを入れるとUTCになります。でも僕のパソコン(mac)は日本にあるので+9時間です。

date1 - Thu Feb 01 2024 17:21:15 GMT+0900

時間を省いて引数に入れます。

date_str2 = '2024-03-01'
let date2 = new Date(date_str2)
console.log('date2',date2)

そうすると、UTCで0時0分0秒の日時を表示します。
またまた日本なので朝の9時になっています。グリニッジは0時0分。

date2 - Thu Feb 01 2024 09:00:00 GMT+0900


取得している日時を変更したい

一度取得した日時を変更します。



まずは今の時刻の再取得から

let now = new Date();
console.log('now', now);

now – Thu May 09 2024 12:52:34 GMT+0900 (日本標準時)



シリアル値の表示

console.log(now.getTime())
console.log('now', now)

1715226754009



2024年を1970年に変更

now.setUTCFullYear(1970)
console.log('set1970', now)

set1970 – Sat May 09 1970 12:52:34 GMT+0900 (日本標準時)



時間をUTC0時に。

now.setUTCHours(0)
console.log('set0h', now)

set0h – Sat May 09 1970 09:52:34 GMT+0900 (日本標準時)



月を1月に(0始まり)

now.setUTCMonth(0)
console.log('set0month', now)

set0month – Fri Jan 09 1970 09:52:34 GMT+0900 (日本標準時)



日付を1日に

now.setUTCDate(1)
console.log('set1date', now)

set1date – Thu Jan 01 1970 09:52:34 GMT+0900 (日本標準時)



時間差を計るときは、シリアル値で計算して表示するなど工夫すればなんとかなりそ。

let start = new Date("2024-05-09T08:21:15");
console.log('start', start)

let goal = new Date();
console.log('goal', goal)

let diff = goal.getTime() - start.getTime()
console.log('different millisec', diff)

let diffTime = new Date(diff);
console.log('different', diffTime.toString())
console.log('different ISO', diffTime.toISOString())

start – Thu May 09 2024 08:21:15 GMT+0900 (日本標準時)
goal – Thu May 09 2024 18:27:21 GMT+0900 (日本標準時)
different millisec – 36366575
different – "Thu Jan 01 1970 19:06:06 GMT+0900
different ISO – "1970-01-01T10:06:06.575Z"


タイム計測した結果をテキストに変換する時なんかはISOで文字型に変換して抜き取った方が良さそうですね。

ということで・・・

今僕ができる時間計算はこんな感じで行っています。
もっと良い方法を探してググってみよう。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0