0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【JavaScript】日付操作メモ

Last updated at Posted at 2022-09-01

はじめに

頻繁に調べるのでそろそろ覚えようという意識で執筆。

時間を文字列 yyyy-MM-dd HH:mm:ss に変換する

Intl.DateTimeFormat 使う案

const target_datetime = new Date('2006-01-02T15:04:05+09:00')
console.log(target_datetime)
// -> Mon Jan 02 2006 15:04:05 GMT+0900 (日本標準時)

const target_datetime_str_slash = Intl.DateTimeFormat(undefined, {
  hour12: false,
  year: 'numeric',
  month: '2-digit',
  day: '2-digit',
  hour: '2-digit',
  minute: '2-digit'
}).format(target_datetime);
console.log(target_datetime_str_slash)
// -> "2006/01/02 15:04"

const target_datetime_str_hyphen = target_datetime_str_slash.replace(/\//g, '-')
console.log(target_datetime_str_hyphen)
// -> "2006-01-02 15:04"

Intl.DateTimeFormat 使わない案

基本的には Intl.DateTimeFormat 使えば良さそうだけどこういう方法もあり。

const target_datetime = new Date('2006-01-02T15:04:05+09:00')
console.log(target_datetime)
// -> Thu Sep 01 2022 02:07:06 GMT+0900 (日本標準時)

const target_datetime_str = target_datetime.getFullYear() + '-'
  + ('0' + (target_datetime.getMonth() + 1)).slice(-2) + '-'
  + ('0' + target_datetime.getDate()).slice(-2) + ' '
  + ('0' + target_datetime.getHours()).slice(-2) + ':'
  + ('0' + target_datetime.getMinutes()).slice(-2) + ':'
  + ('0' + target_datetime.getSeconds()).slice(-2) + ''

console.log(target_datetime_str)
//-> "2006-01-02 15:04:05"

getFullYear() と間違えて getYear() を持ちいると 現在の年 - 1900 を取得してしまうので注意!

getDate() と間違えて getDay() を用いると曜日を取得してしまうので注意!

昨日の日付を取得する

NG

日付オブジェクト today を定義してそこから-1日した結果を yesterday に渡す、という処理で考えると失敗する。

// 当日の日付を定義する
const today = new Date()

// 当日の日付が出力される
console.log(today)
// -> Thu Sep 01 2022 02:07:06 GMT+0900 (日本標準時)

//  todayオブジェクトを前日にし、
//  yesterdayにはtodayオブジェクト(前日)のUNIX時間を渡すことになる
const yesterday = today.setDate(today.getDate() - 1)

// 前日の日付が出力される
console.log(today)
// -> Wed Aug 31 2022 02:07:06 GMT+0900 (日本標準時)

// 前日の日付がUXIN時間(ミリ秒)表記で出力される
console.log(yesterday)
// -> 1661879226000

OK

日付オブジェクト today を定義し、それを用いて別の日付オブジェクト yesterday も定義する。
そして yesterday の日付を1日前に変更すればOK。

const today = new Date()
const yesterday = new Date(today.getTime())
yesterday.setDate(yesterday.getDate() - 1)

console.log(today)
// -> Thu Sep 01 2022 02:07:06 GMT+0900 (日本標準時)
console.log(yesterday)
// -> Wed Aug 31 2022 02:07:06 GMT+0900 (日本標準時)

上記はありがちなミスを説明するために当日と前日を同時に出力しているが、
昨日分のみ必要な場合は下記でOK。

const yesterday = new Date()
yesterday.setDate(yesterday.getDate() - 1)

console.log(yesterday)
// -> Wed Aug 31 2022 02:07:06 GMT+0900 (日本標準時)

setDate() の細かい点は参考参照。

0
0
4

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?