/** dayjs.tz.setDefault("Asia/Tokyo") している前提 */
/** 現在日時が 2024-04-22T08:00:00+09:00 のとき */
const date = new Date("2024-04-22T08:00:00+09:00")
// 現在日時(JST)
dayjs.tz().toDate() // 2024-04-21T23:00:00.000Z = 2024-04-22T08:00:00+09:00
// 文字列(JST)のパース
dayjs.tz("2021-09-01", "YYYY-MM-DD", JAPAN_TIMEZONE).toDate() // 2021-08-31T15:00:00.000Z = 2021-09-01T00:00:00+09:00
// 文字列(JST)に変換
dayjs.tz(date).format("YYYY-MM-DD HH:mm:ss") // 2024-04-22 08:00:00
// 日時(JST)の加減算
dayjs.tz(date).add(1, "day").toDate() // 2024-04-22T23:00:00.000Z = 2024-04-23T08:00:00+09:00
dayjs.tz(date).subtract(1, "month").toDate() // 2024-03-21T23:00:00.000Z = 2024-03-22T08:00:00+09:00
// 月初日・月末日(JST)
dayjs.tz(date).startOf("month").toDate() // 2024-03-31T15:00:00.000Z = 2024-04-01T00:00:00+09:00
dayjs.tz(date).endOf("month").toDate() // 2024-04-30T14:59:59.999Z = 2024-04-30T23:59:59+09:00
// 部分的に特定の日時(JST)を設定
dayjs.tz(date)
.hour(0).minute(0).second(0).millisecond(0)
.toDate() // 2024-04-21T15:00:00.000Z = 2024-04-22T00:00:00+09:00
// 差分の計算
dayjs.tz(to).diff(from, 'hours')
// JSTの日付や時刻を取得
dayjs.tz(date).hour() // 時
dayjs.tz(date).date() // 日
dayjs.tz(date).month() // 月
dayjs.tz(date).year() // 年
dayjs.tz(date).day() // 曜日(0-6) 0:日曜日
dayjs.tz(date).daysInMonth() // 月の日数(28-31)
/**
* NG
*/
dayjs(date) // 実行環境のタイムゾーンに依存する。この呼び出し自体は問題ないが、JST の日時を期待して .date() や .format() すると UTC の日時が返る
dayjs("2021-09-01", "YYYY-MM") // 実行環境のタイムゾーンに依存する
dayjs().tz(JAPAN_TIMEZONE, true) // オフセットが加算されるので toDate すると実際の日時ではなくなる
dayjs.tz(date).add(JAPAN_TIMEZONE_OFFSET, "hours") // 本当にオフセットを加算する必要があるのかよく考えること。だいたいは必要ないはず
Last active
April 22, 2024 05:52
-
-
Save aliyome/291145f8447475c1076a3c7ff1def5d1 to your computer and use it in GitHub Desktop.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment