JavaScript日付からUnix時間へ
JavaScriptにおける正規日付からUnixタイムスタンプへの変換
JavaScriptでは、日付を扱うために組み込みのDate
オブジェクトを使用します。このオブジェクトは、日付と時刻の情報を保持し、さまざまな操作を可能にします。そのうちのひとつが、正規日付からUnixタイムスタンプへの変換です。
Unixタイムスタンプは、1970年1月1日 UTCからの経過秒数を表す数値です。プログラミングにおいて、日付と時刻の計算や比較を行う際に、Unixタイムスタンプが頻繁に使用されます。
Date
オブジェクトのメソッドを使用する
JavaScriptのDate
オブジェクトには、正規日付からUnixタイムスタンプを取得するためのメソッドがあります。
getTime()メソッド
- Unixタイムスタンプは秒単位であるため、
getTime()
の戻り値を1000で除算する必要があります。 - このメソッドは、
Date
オブジェクトのミリ秒単位のタイムスタンプを返します。
const date = new Date(); // 現在の日時を取得
const unixTimestamp = date.getTime() / 1000;
console.log(unixTimestamp); // Unixタイムスタンプを出力
jQueryのプラグインを使用する
jQueryは、JavaScriptのライブラリであり、さまざまな機能を提供します。日付関連の操作を行うためのプラグインも存在します。例えば、moment.js
は、日付と時刻の操作を簡単に行える人気のプラグインです。
// moment.jsをインストールし、読み込む
// ...
const date = new Date();
const unixTimestamp = moment(date).unix();
console.log(unixTimestamp);
注意
- Unixタイムスタンプは、UTC(協定世界時)に基づいています。
Date
オブジェクトとjQueryのプラグインを使用する際には、タイムゾーンの設定に注意してください。異なるタイムゾーンでは、同じ正規日付でも異なるUnixタイムスタンプが得られることがあります。
// 現在の日時を取得
const date = new Date();
// ミリ秒単位のタイムスタンプを取得
const milliseconds = date.getTime();
// 秒単位のUnixタイムスタンプに変換
const unixTimestamp = milliseconds / 1000;
console.log(unixTimestamp); // Unixタイムスタンプを出力
jQueryのプラグインを使用する(moment.js)
// moment.jsをインストールし、読み込む
// ...
// 現在の日時を取得
const date = new Date();
// moment.jsを使用してUnixタイムスタンプを取得
const unixTimestamp = moment(date).unix();
console.log(unixTimestamp);
具体的な例
// 指定した日付をUnixタイムスタンプに変換
const specificDate = new Date("2023-12-25");
const unixTimestamp = specificDate.getTime() / 1000;
console.log(unixTimestamp); // 1671980800
解説
- 具体的な例では、指定した日付(2023年12月25日)をUnixタイムスタンプに変換しています。
- moment.jsを使用する場合、
moment(date).unix()
メソッドで直接Unixタイムスタンプを取得できます。 - この値を1000で除算することで、秒単位のUnixタイムスタンプに変換します。
Date
オブジェクトのgetTime()
メソッドは、ミリ秒単位のタイムスタンプを返します。
Date.parse()メソッドを使用する
Date.parse()
メソッドは、文字列形式の日付を解析して、ミリ秒単位のタイムスタンプを返します。
const dateString = "2023-12-25";
const unixTimestamp = Date.parse(dateString) / 1000;
console.log(unixTimestamp); // 1671980800
Date.UTC()
メソッドは、指定した年、月、日、時、分、秒からUTCタイムスタンプを生成します。
const year = 2023;
const month = 11; // 0-based (November)
const day = 25;
const hours = 0;
const minutes = 0;
const seconds = 0;
const unixTimestamp = Date.UTC(year, month, day, hours, minutes, seconds) / 1000;
console.log(unixTimestamp); // 1671980800
Date.now()
メソッドは、現在のミリ秒単位のタイムスタンプを返します。
const unixTimestamp = Date.now() / 1000;
console.log(unixTimestamp); // 現在のUnixタイムスタンプ
moment.jsの他のメソッドを使用する
moment.js
には、unix()
以外にも、valueOf()
やformat()
などのメソッドを使用して、日付をUnixタイムスタンプに変換することができます。
const date = new Date();
const unixTimestamp = moment(date).valueOf() / 1000;
console.log(unixTimestamp);
Date.now()
メソッドは、現在の時刻を取得するため、過去の時点のUnixタイムスタンプを取得する場合は使用できません。Date.UTC()
メソッドは、UTCタイムスタンプを生成するため、ローカルタイムゾーンとの変換が必要な場合は注意が必要です。Date.parse()
メソッドは、文字列形式の日付の解析に依存するため、日付のフォーマットが正しくない場合はエラーが発生する可能性があります。
javascript jquery date