TypeScriptで今日の日付を取得!初心者必見の10選方法

初心者向けTypeScriptでの日付取得方法TypeScript
この記事は約15分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

近年、TypeScriptがWeb開発の現場で注目されています。

その中でも、日常的な開発作業の一つに「日付の取得」が挙げられます。

JavaScriptとほぼ同じ構文で日付を取得できるTypeScriptですが、型の安全性を追求するためのさまざまな手法やテクニックが存在します。

本記事では、TypeScript初心者向けに今日の日付を取得する10の方法を徹底的に解説します。

サンプルコードとその詳細な説明を交えながら、初心者の方でも日付取得の手法をマスターする手助けとなることを目指します。

●TypeScriptとは

TypeScriptは、Microsoftによって開発されたオープンソースのプログラミング言語であり、JavaScriptのスーパーセットとして位置づけられています。

この言語は、JavaScriptの柔軟性を保持しつつ、静的型付けやインターフェースなどの強力な機能を導入して、大規模なアプリケーション開発をサポートしています。

○TypeScriptの基本的な特徴

TypeScriptは次の特徴を持っています。

❶静的型付け

TypeScriptでは、変数や関数のパラメータ、戻り値などに型を指定することが可能です。

これにより、コンパイル時に型の不整合やエラーを検出することができ、バグの早期発見や修正が容易になります。

❷クラスとインターフェース

JavaScriptのプロトタイプベースのオブジェクト指向とは異なり、TypeScriptはクラスベースのオブジェクト指向を採用しています。

さらに、インターフェースを利用することで、特定の構造を持つオブジェクトを定義したり、クラスの実装を強制することができます。

❸ジェネリクス

TypeScriptでは、一般的な型を持つコンポーネントを作成することが可能です。

これにより、再利用性の高いコードを書くことができます。

○JavaScriptとの違い

JavaScriptは、Webブラウザ上で動作するスクリプト言語として広く使用されています。

一方、TypeScriptはJavaScriptの上に構築された言語で、JavaScriptが持つ柔軟性や動的型付けの特性を引き継いでいますが、上述の静的型付けやクラス、インターフェースなどの機能が追加されています。

また、TypeScriptはトランスパイラを利用して、TypeScriptのコードをJavaScriptのコードに変換します。

この変換されたJavaScriptのコードは、任意のブラウザやNode.jsで動作します。

●今日の日付の取得方法の基礎

○TypeScriptでの日付の基本

TypeScriptで日付を扱う際には、JavaScriptのDateオブジェクトをそのまま利用します。

このオブジェクトは、日付や時刻を表現するためのメソッドやプロパティを多数提供しています。

このコードではDateオブジェクトを使って今日の日付を取得するコードを表しています。

この例ではDateオブジェクトのインスタンスを作成して今日の日付を取得しています。

// 今日の日付を取得する
let 今日の日付 = new Date();
console.log(今日の日付);

このコードを実行すると、今日の日付と時刻を含む文字列が出力されます。

例えば、2023年8月19日の場合、”2023-08-19TXX:XX:XX.XXXZ”というような形式で出力されるでしょう。

○日付オブジェクトとは

日付オブジェクトは、JavaScriptとTypeScriptの両方で使用される組み込みオブジェクトです。

このオブジェクトを使用することで、日付や時刻の取得、加算・減算、フォーマット変更など、さまざまな日付関連の操作を行うことが可能です。

日付オブジェクトには、年、月、日、時間、分、秒、ミリ秒の情報が格納されており、これらの情報を取得・変更するためのメソッドが提供されています。

●日付の取得方法10選

TypeScriptを用いて、日付の取得や操作を行う方法は多数存在します。

ここでは、特に初心者にとって役立つ10の方法を徹底解説していきます。

それぞれの方法にはサンプルコードとともに詳細な説明を添えて紹介しますので、ぜひ参考にしてください。

○サンプルコード1:new Date()を用いた方法

このコードでは、TypeScriptの基本的な日付取得方法として、new Date()を用いた方法を表しています。

この例では、new Date()のインスタンスを作成することで現在の日付と時刻を取得しています。

let currentDate = new Date();
console.log(currentDate);

上記のコードを実行すると、例えば”2023-08-19TXX:XX:XX.XXXZ”のような形式で現在の日付と時刻が出力されるでしょう。

○サンプルコード2:年、月、日を個別に取得する方法

このコードでは、getFullYear(), getMonth(), getDate()メソッドを使って、年、月、日をそれぞれ個別に取得する方法を紹介しています。

この例では、それぞれのメソッドを使って年月日の情報を取得し、表示しています。

let today = new Date();
let year = today.getFullYear();
let month = today.getMonth() + 1;  // 月は0から始まるため、1を加算
let day = today.getDate();
console.log(`今日は${year}年${month}月${day}日です。`);

上記のコードを実行すると、”今日は2023年8月19日です。”という形式で年、月、日が出力されるでしょう。

○サンプルコード3:UTC形式で取得する方法

このコードでは、getUTCFullYear(), getUTCMonth(), getUTCDate()メソッドを使って、UTC形式の年、月、日を取得する方法を表しています。

let utcDate = new Date();
let utcYear = utcDate.getUTCFullYear();
let utcMonth = utcDate.getUTCMonth() + 1;
let utcDay = utcDate.getUTCDate();
console.log(`UTC形式での日付は${utcYear}年${utcMonth}月${utcDay}日です。`);

このコードを実行すると、UTCの基準での年、月、日が出力されます。

○サンプルコード4:ISO形式で取得する方法

このコードでは、toISOString()メソッドを使って、日付をISO8601形式の文字列として取得する方法を表しています。

let isoDate = new Date();
let isoString = isoDate.toISOString();
console.log(`ISO形式での日付は${isoString}です。`);

このコードを実行すると、”2023-08-19TXX:XX:XX.XXXZ”のようなISO8601形式の日付が出力されるでしょう。

○サンプルコード5:日付のフォーマット変更方法

このコードでは、日付のフォーマットを変更する方法を表しています。

具体的には、toLocaleDateString()メソッドを使用して、日付を任意のフォーマットに変換しています。

let formatDate = new Date();
let japanFormat = formatDate.toLocaleDateString('ja-JP');
console.log(`日本のフォーマットでの日付は${japanFormat}です。`);

このコードを実行すると、”2023年8月19日”という日本の日付フォーマットでの出力が得られるでしょう。

○サンプルコード6:時間や分も含めた詳細な取得方法

このコードでは、getHours()やgetMinutes()メソッドを使用して、時間や分を含めた詳細な日付の取得方法を紹介しています。

let detailDate = new Date();
let hour = detailDate.getHours();
let minute = detailDate.getMinutes();
console.log(`現在の時間は${hour}時${minute}分です。`);

このコードを実行すると、現在の時間と分が出力されます。

例として、もし現在が15時30分の場合、”現在の時間は15時30分です。”という結果が得られるでしょう。

○サンプルコード7:タイムゾーンを考慮した取得方法

タイムゾーンに応じて日付や時刻の情報が異なることがあります。

ここでは、Intl.DateTimeFormatオブジェクトを利用して、特定のタイムゾーンでの日付や時刻を取得する方法を紹介しています。

let timeZoneDate = new Date();
let formatter = new Intl.DateTimeFormat('ja-JP', { timeZone: 'Asia/Tokyo' });
let tokyoDate = formatter.format(timeZoneDate);
console.log(`東京の現在の日付は${tokyoDate}です。`);

このコードを実行すると、東京のタイムゾーンに基づいた日付が出力されるでしょう。

○サンプルコード8:ライブラリを利用した日付取得方法

外部ライブラリ、特にdate-fnsmomentなどは日付や時刻の操作を簡単に行うための多数の関数を提供しています。

このコードでは、date-fnsライブラリを使用して、今日の日付を取得する方法を紹介しています。

import { format } from 'date-fns';

let libraryDate = new Date();
let formattedDate = format(libraryDate, 'yyyy-MM-dd');
console.log(`ライブラリを利用した日付は${formattedDate}です。`);

このコードを実行すると、”2023-08-19″という形式で日付が出力されるでしょう。

○サンプルコード9:任意の日付形式での出力方法

日付の表示形式をカスタマイズしたい場合もあります。

このコードでは、任意の日付形式での出力を行う方法を表しています。

具体的には、date-fnsライブラリのformat関数を使っています。

import { format } from 'date-fns';

let customDate = new Date();
let customFormat = format(customDate, 'MMMM do, yyyy');
console.log(`任意のフォーマットでの日付は${customFormat}です。`);

このコードを実行すると、”August 19th, 2023″のような形式で日付が出力されるでしょう。

○サンプルコード10:過去や未来の日付の取得方法

日付の計算を行って、過去や未来の日付を取得することも可能です。

このコードでは、date-fnsライブラリのaddDays関数を使用して、今日から10日後の日付を取得する方法を表しています。

import { addDays, format } from 'date-fns';

let futureDate = addDays(new Date(), 10);
let formattedFutureDate = format(futureDate, 'yyyy-MM-dd');
console.log(`10日後の日付は${formattedFutureDate}です。`);

このコードを実行すると、10日後の日付が出力されるでしょう。

例として、今日が2023年8月19日の場合、”2023-08-29″という結果が得られるでしょう。

●注意点と対処法

TypeScriptで日付を取得する際には、いくつかの注意点があります。

日付や時刻の取得は一見シンプルに思えるかもしれませんが、タイムゾーンの違いや夏時間の考慮、さらには古いブラウザでの動作の違いなど、様々な要因によって予期しない結果が生じることがあります。

そこで、ここではそれらの注意点とその対処法について解説します。

○日付の取得時のタイムゾーンの違い

日付や時刻の情報を取得する際、タイムゾーンの違いによって異なる結果が返されることがあります。

例えば、ユーザーが日本にいる場合とアメリカにいる場合では、同じコードを実行しても返される日付や時刻が異なることが考えられます。

このコードでは、デフォルトのタイムゾーンを使用して現在の日付を取得しています。

let currentDate = new Date();
console.log(currentDate);

上のコードを実行すると、実行した環境のタイムゾーンに基づいた日付と時刻が表示されます。

しかし、特定のタイムゾーンの日付や時刻を取得したい場合、Intl.DateTimeFormatを利用することで、タイムゾーンを指定して日付を取得することができます。

let timeZoneDate = new Date();
let formatter = new Intl.DateTimeFormat('ja-JP', { timeZone: 'Asia/Tokyo' });
let tokyoDate = formatter.format(timeZoneDate);
console.log(`東京の現在の日付は${tokyoDate}です。`);

東京のタイムゾーンでの日付が取得されるため、ユーザーがどの地域にいても東京の日付が正確に取得されます。

○夏時間の考慮

多くの国や地域では、夏時間を採用しています。

夏時間は、エネルギーの節約や日照時間の最適化のために、ある期間中時刻を1時間進める制度です。

このため、夏時間を採用している地域で日付や時刻を取得する際には、夏時間の影響を受けることがあります。

TypeScriptでは、夏時間を自動的に考慮することはできません。

そのため、夏時間を考慮して日付や時刻を取得する際には、適切なライブラリを利用するか、自分で夏時間の期間を定義して計算を行う必要があります。

○古いブラウザでの動作の違い

古いブラウザでは、新しいECMAScriptの仕様に完全に対応していないことがあり、日付や時刻の取得方法に違いが生じる場合があります。

特に、Intl.DateTimeFormatなどの新しいAPIを使用する際には、古いブラウザでの動作を確認することが重要です。

古いブラウザでの動作を確認するためには、Polyfillを利用する方法があります。

Polyfillは、新しいAPIや機能をサポートしていないブラウザでも、そのAPIや機能を利用できるようにするスクリプトやライブラリのことを指します。

例えば、date-fnsmomentといったライブラリは、多くのブラウザでの動作が確認されており、古いブラウザでも安定して日付や時刻を取得することができます。

●日付のカスタマイズと拡張方法

TypeScriptで日付を取得することができれば、次に取り組むべきは、その日付をどのようにカスタマイズまたは拡張するかです。

日付の加算や減算、特定の曜日や日にちの計算、さらには祝日や特定のイベント日の取得など、多岐にわたる技術が要求されます。

ここでは、これらの技術に焦点を当てて、詳しく解説していきます。

○日付の加算や減算

日付の加算や減算は、プロジェクトの多くの場面で使用される技術です。

例えば、ある日から一週間後の日付を計算する場合や、特定の期間後の日付を取得する場合などに応用されます。

このコードでは、TypeScriptで日付を取得し、特定の日数を加算するコードを表しています。

この例では、今日の日付を取得し、5日後の日付を計算しています。

const today = new Date();
console.log(`今日の日付: ${today.toDateString()}`);

const daysToAdd = 5;
const futureDate = new Date(today);
futureDate.setDate(today.getDate() + daysToAdd);
console.log(`5日後の日付: ${futureDate.toDateString()}`);

上記のコードを実行すると、今日の日付と5日後の日付がそれぞれ出力されます。

○特定の曜日や日にちの計算方法

特定の曜日や日にちを計算する必要がある場面も少なくありません。

例えば、今月の第一月曜日や、来月の最後の金曜日などを計算する場合です。

このコードでは、今月の第一月曜日の日付を計算するコードを表しています。

この例では、月の最初の日から週の最初の月曜日を検索しています。

const getFirstMondayOfMonth = (year: number, month: number): Date => {
    const firstDayOfMonth = new Date(year, month, 1);
    const day = firstDayOfMonth.getDay();
    const difference = day === 0 ? 1 : (8 - day + 1);
    firstDayOfMonth.setDate(firstDayOfMonth.getDate() + difference);
    return firstDayOfMonth;
};

const year = new Date().getFullYear();
const month = new Date().getMonth();
const firstMonday = getFirstMondayOfMonth(year, month);
console.log(`今月の第一月曜日は: ${firstMonday.toDateString()}`);

このコードを実行すると、今月の第一月曜日の日付が出力されます。

○祝日や特定のイベント日の取得方法

日本には多くの祝日があります。

これらの日付を自動的に計算して取得するには、外部のライブラリを利用するのが一般的です。

このコードでは、date-holidaysというライブラリを使って、特定の年の日本の祝日を取得するコードを紹介しています。

この例では、2023年の日本の祝日を取得しています。

まず、ライブラリをインストールします。

npm install date-holidays

次に、次のコードで祝日を取得します。

import { DateHolidays } from 'date-holidays';

const hd = new DateHolidays('JP');
const holidays = hd.getHolidays(2023);
console.log('2023年の日本の祝日:');
holidays.forEach(holiday => {
    console.log(`${holiday.date}: ${holiday.name}`);
});

このコードを実行すると、2023年の日本の祝日とその日付が一覧で出力されます。

まとめ

TypeScriptを使用した日付の取得に関する詳細なガイドを通して、多くの手法とその実装方法について紹介しました。

初心者でも理解しやすいように、各手法をサンプルコードとともに解説してきました。

カスタマイズや拡張方法も網羅しましたので、TypeScriptでの日付取得に関する知識が一段と深まったことでしょう。

こちらのガイドが、あなたのTypeScriptにおける日付取得の学びの一助となることを心より願っています。