blog

つの`dateオブジェクト`が同じ日であるかどうかを判定する方法

渡された2つの日付オブジェクトが同じ日であるかどうかを判定します。 () を使って、渡された Date オブジェクトを全体的に比較します。 このメソッドは、ISO標準を使用してDateオブジェクトを文...

May 10, 2020 · 2 min. read
シェア

渡された2つの日付オブジェクトが同じ日であるかどうかを判定します。

Date.prototype.toISOString()入力される日付オブジェクトを完全に等しく比較するために使用します。

const isSameDate = (dateA, dateB) => {
 return dateA.toISOString() === dateB.toISOString();
}

// true
isSameDate(new Date(), new Date()); 

エクステンデッド・リーディング

Date.prototype.toISOStringメソッドは、ISO 標準を使用して Date オブジェクトを文字列に変換します。

YYYY-MM-DDTHH:mm:ss.sssZこの標準はISO-0681と呼ばれ、以下のフォーマットで標準GMT時間を返します。

アプリケーションが海外のユーザーを対象としている場合、クロスタイムゾーンを考慮する必要があります。

GMT

GMT時間とは、イギリスのグリニッジ標準時のことで、世界標準時としても知られています。

ゲットタイムゾーンオフセット

new Date().getTimezoneOffsetメソッドは、現地時間と GMT 時間の差を分単位で取得します。East 8 でこのメソッドを呼び出した場合の返り値は -084 です。

getTimezoneOffsetが時間単位ではなく分単位で値を返す理由は、1時間未満の間隔でタイムゾーンを使用する国があるためです。

したがって、タイムゾーンを考慮すると、上記のコードは次のように書くことができます:


const getLocalISOTime = date => {
 // 分をミリ秒に変換する
 const offset = date.getTimezoneOffset() * ;
 // 現地時間のタイムスタンプの誤差を取り除く
 const localDate = date.getTime() - offset; 
 
 // ISO標準時間フォーマットに変換する
 return new Date(localDate).toISOString();
}
const isSameDate = (dateA, dateB) => {
 return getLocalISOTime(dateA) === getLocalISOTime(dateB);
}

フロントエンドのナレッジポイントを30秒間フォロー

Read next

基本的なおさらい:jsの種類と検出方法

string、boolean、number、null、undefinedはプリミティブ型と呼ばれ、js規定の最も基本的で原始的な型を表します。 symbolはES6で追加された新しいデータ型で、一意な値を表します。シンボルの初期化にはnewは使えません。 nullとundefine...

May 10, 2020 · 6 min read