TypeScriptで日付型を表現する方法
TypeScriptでは、日付型を直接表現する組み込みの型は存在しません。しかし、JavaScriptの組み込みオブジェクトであるDate
オブジェクトを使用して、日付と時刻を扱うことができます。
Date
オブジェクトの使用
// Dateオブジェクトの生成
const now = new Date(); // 現在の日時を取得
// 具体的な日時を指定
const specificDate = new Date(2023, 11, 25); // 2023年12月25日
// 年、月、日、時、分、秒を取得
const year = now.getFullYear();
const month = now.getMonth(); // 0から11の値
const day = now.getDate();
const hours = now.getHours();
const minutes = now.getMinutes();
const seconds = now.getSeconds();
注意
Date
オブジェクトは、UTC (協定世界時) を基準に扱われます。ローカルタイムゾーンとの変換が必要な場合は、toLocaleString()
などのメソッドを使用します。- 月は0から11で表現されるため、1月は0、2月は1となります。
Date
オブジェクトのフォーマット
toLocaleString()
メソッドを使用して、Date
オブジェクトをさまざまな形式で文字列に変換できます。
const formattedDate = now.toLocaleString('ja-JP', {
year: 'numeric',
month: 'long',
day: 'numeric',
hour: 'numeric',
minute: 'numeric',
second: 'numeric'
});
Date
型を定義する (オプション)
より型安全なコードを書くために、Date
型をカスタム型として定義することもできます。
type MyDate = Date;
const myDate: MyDate = new Date();
- カスタム型として
Date
型を定義することも可能です。 toLocaleString()
メソッドでさまざまな形式に変換できます。- JavaScriptの
Date
オブジェクトを使用して日付と時刻を操作します。 - TypeScriptには直接的な日付型はありません。
// 現在の日時を取得
const now = new Date();
// 具体的な日時を指定
const specificDate = new Date(2023, 11, 25); // 2023年12月25日
// 年、月、日、時、分、秒を取得
const year = now.getFullYear();
const month = now.getMonth(); // 0から11の値
const day = now.getDate();
const hours = now.getHours();
const minutes = now.getMinutes();
const seconds = now.getSeconds();
const formattedDate = now.toLocaleString('ja-JP', {
year: 'numeric',
month: 'long',
day: 'numeric',
hour: 'numeric',
minute: 'numeric',
second: 'numeric'
});
カスタム型としてのDate
型
type MyDate = Date;
const myDate: MyDate = new Date();
説明
- カスタム型
Date
型をカスタム型として定義することで、型安全性を向上させることができます。 - toLocaleString()
Date
オブジェクトを指定した言語とフォーマットで文字列に変換します。 - getFullYear(), getMonth(), getDate(), getHours(), getMinutes(), getSeconds()
Date
オブジェクトの各要素を取得します。 - new Date(year, month, day, hour, minute, second)
指定した年、月、日、時、分、秒で新しいDate
オブジェクトを作成します。 - new Date()
現在の日時を取得します。
ライブラリの活用
- Luxon
より現代的なアプローチで日付と時刻を扱うためのライブラリです。シンプルで直感的なAPIを提供します。 - Moment.js
JavaScriptの日付と時刻を扱うための強力なライブラリです。日付のフォーマット、操作、計算などを簡単に実行できます。
カスタム型とインターフェース
- インターフェース
Date
型をインターフェースとして定義し、他の型との関係や必要なプロパティを指定することができます。 - カスタム型
Date
型をカスタム型として定義し、特定のフィールドやメソッドを追加することができます。
クラスの定義
- クラス
Date
型を基底クラスとして、独自のクラスを定義し、日付に関する機能を提供することができます。
例: Moment.jsを使用
import moment from 'moment';
const now = moment();
const formattedDate = now.format('YYYY-MM-DD HH:mm:ss');
例: カスタム型
type MyDate = {
year: number;
month: number;
day: number;
};
const myDate: MyDate = {
year: 2023,
month: 11,
day: 25
};
例: インターフェース
interface DateInterface {
year: number;
month: number;
day: number;
format(): string;
}
class MyDate implements DateInterface {
year: number;
month: number;
day: number;
constructor(year: number, month: number, day: number) {
this.year = year;
this.month = month;
this.day = day;
}
format(): st ring {
return `${this.year}-${this.month}-${this.day}`;
}
}
date typescript