TypeScriptで現在時刻を取得!10の実践的な方法集

TypeScriptでの現在時刻取得のイラストとサンプルコードTypeScript
この記事は約22分で読めます。

 

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

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

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

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

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

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

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

はじめに

TypeScriptはJavaScriptに静的な型を追加することで、開発者の生産性向上やバグの早期発見を支援する言語です。

特に日付や時刻を取り扱う際、型のサポートがあると安全にコーディングできるのは大きな魅力の一つです。

そこで、今回はTypeScriptを使って現在時刻を取得する10の実践的な方法を詳しく解説します。

●TypeScriptとは

TypeScriptは、Microsoftによって開発されたJavaScriptのスーパーセットです。

JavaScriptのコードはそのままTypeScriptとしても動作しますが、TypeScriptは型情報を追加することで、コンパイル時に型の不一致やその他のエラーを検出できます。

これにより、大規模なアプリケーションの開発や、チームでの協力が容易になります。

○TypeScriptの基本概要

TypeScriptは、静的型チェックを持つJavaScriptの拡張版として知られています。

この静的型チェックのおかげで、開発時に潜むバグを早期に発見したり、エディタやIDEの補完を効果的に活用できます。

特に日付や時刻のような特定のデータ型を扱う場面では、型の安全性が求められるため、TypeScriptの採用が強く推奨されます。

●現在時刻を取得する基本的な方法

TypeScriptを用いて現在の日時を取得する場面は多々あります。

システムのログ記録やタイムスタンプの設定、データの取得時間の記録など、様々な場面で日時情報は求められます。

ここでは、TypeScriptでの現在時刻の取得方法を基本的なものから解説していきます。

○サンプルコード1:Dateオブジェクトを利用した基本的な取得方法

まず、最も基本的な方法として、JavaScriptにおけるDateオブジェクトを利用した取得方法があります。

TypeScriptでもこの方法を用いることができます。

// 現在の日時を取得する
const now = new Date();
console.log(now);

このコードでは、Dateオブジェクトを使って現在の日時を取得しています。

この例では、変数nowに現在の日時情報が格納されます。

その後、console.logを使ってコンソールに出力されます。

この方法で取得される日時は、ブラウザやサーバーのシステム設定に基づくものであり、ユーザのロケールやタイムゾーンの設定により、出力される内容が変わることがあります。

実際に上記のコードを実行すると、例えば「2023-08-27T12:34:56.789Z」のような形式で現在の日時が出力されます。

ここで、”T”は日付と時刻のセパレータ、”Z”はUTC時刻を示しています。

この形式は、ISO 8601という国際標準の日時表記形式に従っており、年-月-日T時:分:秒.ミリ秒Zの形になっています。

この形式はデータベースやAPIでの日時のやり取りによく用いられるもので、一般的に広く認知されています。

○サンプルコード2:ISO形式の文字列で時刻を取得

TypeScriptを使用してプログラミングを行う際、現在の日付や時刻をISO形式の文字列で取得する場面がしばしばあります。

特に、データの保存や通信、ログの記録などでこの形式を好むシステムが多いのです。

ここでは、TypeScriptでのISO形式の文字列での時刻取得方法を実際のコードを交えて詳細に解説していきます。

□TypeScriptでのISO形式の文字列での時刻取得の手順

  1. まず、JavaScriptの組み込みオブジェクトであるDateオブジェクトを新しくインスタンス化します。
  2. このインスタンス化したDateオブジェクトに、toISOStringメソッドを使用して、ISO形式の文字列を取得します。

このコードでは、Dateオブジェクトを使って現在の日付と時刻を取得しています。

この例では、新しく生成されたDateオブジェクトのtoISOStringメソッドを使用して、現在の日付と時刻をISO形式の文字列として取得しています。

// TypeScriptでのISO形式の文字列での時刻取得方法
const nowISO: string = new Date().toISOString();
console.log(nowISO);

このコードを実行すると、例えば「2023-08-27T12:34:56.789Z」のような形式で現在の日付と時刻が表示されます。

ここで「T」は日付と時刻の区切りを示し、「Z」は協定世界時(UTC)を示しています。

一見、この形式は複雑に見えるかもしれませんが、国際的に広く認識されている形式ですので、多くのシステムやライブラリでサポートされています。

そのため、外部のAPIやデータベースとのやり取りなどでこの形式を使用することが推奨されるケースも少なくありません。

□ISO形式の文字列の特徴と利点

  1. 国際的な規格:ISO形式は国際的な標準であるため、システム間の日付や時刻の表現に適しています。
  2. タイムゾーンの考慮:Zがついている場合、これは協定世界時(UTC)を示すため、タイムゾーンの違いに起因する誤解を避けることができます。
  3. 精度:ISO形式はミリ秒までの精度を持っており、高精度な時刻情報が必要な場面で役立ちます。

この形式での時刻取得は、前述の通り多くの場面で有効です。

特にグローバルに展開するサービスやアプリケーションを開発する際には、このISO形式を活用することで多くのトラブルを避けることができるでしょう。

○サンプルコード3:ロケールを指定して時刻を取得

TypeScriptでのプログラミングでは、多言語対応のアプリケーションやウェブサイトを開発する場合、ロケールを指定して日付や時刻を取得することがあります。

ここでは、TypeScriptでロケールを指定して現在の日付や時刻を取得する方法について詳しく解説します。

ロケールとは、特定の言語や地域に基づく日付、時間、数値などの書式情報を表すものです。

例えば、アメリカと日本では日付の表記方法が異なります。これをプログラムで実現するためには、ロケールを指定して適切な書式で日付や時刻を表示する必要があります。

下記のサンプルコードでは、日本のロケールを指定して現在の日付と時刻を取得します。

// ロケールを指定して日付を取得するサンプルコード
const now = new Date();
const options: Intl.DateTimeFormatOptions = {
    year: 'numeric',
    month: 'long',
    day: 'numeric',
    hour: '2-digit',
    minute: '2-digit',
    second: '2-digit'
};
const localeDateString = now.toLocaleDateString('ja-JP', options);
console.log(localeDateString);

このコードでは、まず現在の日付と時刻を取得するためのDateオブジェクトをnowという定数に格納しています。

次に、日付や時刻のフォーマットオプションを設定するためのoptionsというオブジェクトを定義します。

このオブジェクトでは、年、月、日、時、分、秒の各部分の表示方法を指定しています。

最後に、toLocaleDateStringメソッドを使用して、日本のロケール(‘ja-JP’)を指定し、上で定義したオプションを適用して日付と時刻の文字列を取得しています。

取得した文字列はコンソールに出力されます。

このサンプルコードを実行すると、次のような結果が得られます。

2023年8月27日、13時25分33秒

こちらは、実行時の日時に応じて異なる結果が表示されることに注意してください。

また、異なるロケールを指定することで、異なる書式の日付や時刻を取得することもできます。

例えば、アメリカのロケール(‘en-US’)を指定すると、月/日/年の形式で日付が表示されます。

●現在時刻のフォーマット方法

日付や時刻のフォーマットは、アプリケーションやウェブサイトにおいて、ユーザーに情報を適切に伝えるために重要です。

適切なフォーマットを選択することで、ユーザー体験を向上させることができます。

TypeScriptでは、JavaScriptのDateオブジェクトをベースにした操作を行うことができ、さまざまなフォーマットを実現することが可能です。

○サンプルコード4:年月日の形式でフォーマット

このコードでは、Dateオブジェクトを使って現在時刻を取得し、その後、年、月、日の形式でフォーマットしています。

具体的には、getFullYear(), getMonth(), getDate()というメソッドを使用して、それぞれの情報を取得し、組み合わせています。

// 現在の日付を取得する
const now = new Date();

// 年、月、日を取得する
const year = now.getFullYear();
const month = now.getMonth() + 1; // getMonth()は0から11までの値を返すため、1を加える
const day = now.getDate();

// 年月日の形式でフォーマットする
const formattedDate = `${year}年${month}月${day}日`;
console.log(formattedDate);

この例を実際に実行すると、例えば「2023年8月27日」といった形式で現在の日付がコンソールに表示されます。

こちらの方法を使用することで、日本の慣用的な年月日の表記を手軽に実現することができます。

○サンプルコード5:曜日を含む日時のフォーマット

TypeScriptでの日時操作は、JavaScriptと似ています。特に、日付や時刻に関する機能はDateオブジェクトを中心に利用することが一般的です。

ここでは、曜日を含む日時のフォーマットの方法を詳細に解説します。

このコードではDateオブジェクトを使って現在の日時を取得しています。

この例では、曜日の情報を含めて日時を文字列としてフォーマットしています。

// 現在の日時を取得
const now = new Date();

// 曜日を日本語で取得する関数
function getJapaneseDay(day: number): string {
  const daysInJapanese = ["日", "月", "火", "水", "木", "金", "土"];
  return daysInJapanese[day];
}

// 年月日と曜日を含む日時をフォーマット
const formattedDate = `${now.getFullYear()}年${now.getMonth() + 1}月${now.getDate()}日 (${getJapaneseDay(now.getDay())}曜日) ${now.getHours()}時${now.getMinutes()}分${now.getSeconds()}秒`;

console.log(formattedDate);

上記のコードでは、まず現在の日時を取得するためにnew Date()を使用しています。

次に、getJapaneseDayという関数を定義して曜日の番号(0から6)を日本語の曜日名(”日”から”土”)に変換しています。

最後にテンプレートリテラルを使用して、年月日と曜日を含むフォーマットの日時を文字列として取得しています。

実際に上記のコードを実行すると、例えば「2023年8月27日 (日曜日) 12時34分56秒」といった形式で現在の日時が出力されます。

こちらのコードは、特定の場面での日時の表示や、ユーザーに日時を伝える際に使える形式となっています。

○サンプルコード6:時分秒を含むフォーマット方法

現在の時刻を、時分秒の形式でフォーマットする際の方法を解説します。

この手法は、特定のシステムやアプリケーションで具体的な時間情報が求められる場合などに有効です。

// このコードではDateオブジェクトを使って、現在の時刻を取得します。
const now = new Date();

// この例では、getHours、getMinutes、getSecondsメソッドを使って、現在の時間、分、秒をそれぞれ取得しています。
const hours = String(now.getHours()).padStart(2, '0');
const minutes = String(now.getMinutes()).padStart(2, '0');
const seconds = String(now.getSeconds()).padStart(2, '0');

// 時間、分、秒をコロン(:)で連結して表示形式を整えています。
const formattedTime = `${hours}:${minutes}:${seconds}`;
console.log(formattedTime);

上記のコードを実行すると、現在の時間を”hh:mm:ss”の形式でコンソールに出力します。

具体的には、13:45:32のような形式で時間が表示されます。

ここで、padStartメソッドを使用しているのは、時間や分や秒が一桁の場合に二桁表示にするためです。

例えば、909のように表示することができます。

この方法を利用することで、UIのデザインやログ情報など、さまざまなシチュエーションでの時間情報の表示を綺麗に、そして一貫性を持って行うことができます。

ちなみに、このコードを実際に実行すると、現在の時刻に応じて例えば10:32:20のように具体的な時刻がコンソール上に表示されます。

このフォーマットは、リアルタイムな時間情報の取得や、時間に関連する操作を行いたい場合に非常に便利です。

また、TypeScriptを使用しているため、型の安全性やコードの品質も保たれるため、大規模なプロジェクトやチームでの開発にも適しています。

○サンプルコード7:タイムゾーンを考慮したフォーマット

TypeScriptを使用して、日常のプログラミング作業を行っていると、様々な日付や時刻の操作が求められます。

その中でも、特定のタイムゾーンに合わせて現在時刻を取得したり、フォーマットを変更したりする場面は非常に多いです。

ここでは、タイムゾーンを考慮した時刻の取得・フォーマット方法を詳しく説明します。

タイムゾーンとは、地球上の一定の範囲内で共通の標準時を採用する地域のことを指します。

例えば、日本はUTC+9というタイムゾーンに位置しています。

TypeScriptでタイムゾーンを考慮した日付や時刻の取得を行うには、専用のライブラリやモジュールを利用するのが一般的です。

今回紹介する方法では、「luxon」というライブラリを使用します。

このライブラリは、日付や時刻に関する多くの機能を提供しており、タイムゾーンの取り扱いも容易です。

まず、このコードでは「luxon」を使ってタイムゾーンを考慮したフォーマットを実現しています。

この例では、日本のタイムゾーン(UTC+9)を指定して、現在の日時を取得し、特定のフォーマットに変更しています。

// 「luxon」ライブラリをインポート
import { DateTime } from 'luxon';

// 東京のタイムゾーンを指定して、現在の日時を取得
const nowInTokyo = DateTime.now().setZone('Asia/Tokyo');

// フォーマットを変更して、結果を出力
const formattedDate = nowInTokyo.toFormat('yyyy年MM月dd日 HH時mm分ss秒');
console.log(formattedDate);

このコードを実行すると、例えば「2023年08月27日 16時30分45秒」というような形式で、現在の日時が出力されることを期待します。

注意すべき点は、タイムゾーンの指定部分です。

ここでは「Asia/Tokyo」を指定していますが、他のタイムゾーンを指定することも可能です。

例えば、ニューヨークのタイムゾーンは「America/New_York」となります。

また、「luxon」には、さまざまな日付や時刻に関する機能が豊富に用意されています。

例えば、特定の日付や時刻の差を計算する機能や、日付の加算・減算などの操作もサポートしています。

●現在時刻の応用的な取得方法

時と場面に応じて、標準的な方法ではなく、より高度な手法で現在の時刻を取得したい場合があります。

ここでは、UNIXタイムスタンプとしての時刻取得方法を詳細に解説します。

○サンプルコード8:UNIXタイムスタンプでの取得

UNIXタイムスタンプは、1970年1月1日0時0分0秒からの経過秒数を表す整数値です。

これにより、時刻を一意の数字で表現することができ、データベースの保存や比較などの処理でよく使用されます。

下記のコードは、TypeScriptで現在のUNIXタイムスタンプを取得する方法を表しています。

// 現在の日付オブジェクトを取得
const now = new Date();

// UNIXタイムスタンプを取得(ミリ秒単位なので、1000で割って秒単位に変換)
const unixTimestamp = Math.floor(now.getTime() / 1000);

console.log(unixTimestamp);

このコードでは、まずnew Date()を使って現在の日付オブジェクトを取得しています。

その後、getTime()メソッドを使用して、1970年1月1日からの経過時間をミリ秒単位で取得します。

通常、UNIXタイムスタンプは秒単位なので、結果を1000で割って秒単位に変換しています。

上記のコードを実行すると、例えば「1677646523」のようなUNIXタイムスタンプが出力されます。

もちろん、この値は実行するたびに増加していきます。

○サンプルコード9:特定の日付や時刻までの残り時間を計算

目標とする日付や時刻までの残り時間を計算するというタスクは、イベントやセール、特定の日までのカウントダウンなど、さまざまな場面で役立ちます。

ここでは、TypeScriptを使用して特定の日付や時刻までどれだけの時間が残っているのかを計算する方法を解説します。

// 目標の日付を設定(例: 2023年12月31日の24時)
const targetDate = new Date(2023, 11, 31, 24, 0, 0);

// 現在の日付を取得
const now = new Date();

// 両者の差(ミリ秒)を取得
const difference = targetDate.getTime() - now.getTime();

// ミリ秒を単位に変換
const seconds = Math.floor(difference / 1000);
const minutes = Math.floor(seconds / 60);
const hours = Math.floor(minutes / 60);
const days = Math.floor(hours / 24);

// それぞれの単位での残り時間を計算
const remainingSeconds = seconds % 60;
const remainingMinutes = minutes % 60;
const remainingHours = hours % 24;

console.log(`残り${days}日${remainingHours}時間${remainingMinutes}分${remainingSeconds}秒`);

このコードでは、まずnew Date()を使って目標とする日付と時刻を設定しています。

そして、現在の日付との差をミリ秒単位で計算して、それを日、時間、分、秒に変換しています。

最後に、それぞれの単位での残り時間を計算しています。

実際に上記のコードを実行すると、「残り126日3時間45分32秒」といった形式で、2023年12月31日24時までの残り時間が出力されます(出力される実際の時間は、コードを実行する日時によって異なります)。

○サンプルコード10:現在の日付と時刻を組み合わせる方法

TypeScriptを使用したプログラミングにおいて、日付と時刻を組み合わせて利用するシーンは多々あります。

特に日付と時刻を一緒に表示する際や、特定の日時に基づく処理を行いたい場合などに非常に役立ちます。

この章では、日付と時刻を組み合わせて取得する手法を、具体的なサンプルコードとともに詳細に解説します。

まず、基本的な手法として、Dateオブジェクトを利用することで、現在の日付と時刻を取得することができます。

// 現在の日付と時刻を取得する
let now = new Date();

// 年月日と時分秒を組み合わせて表示する
let formattedDate = `${now.getFullYear()}-${(now.getMonth() + 1).toString().padStart(2, '0')}-${now.getDate().toString().padStart(2, '0')} ${now.getHours().toString().padStart(2, '0')}:${now.getMinutes().toString().padStart(2, '0')}:${now.getSeconds().toString().padStart(2, '0')}`;
console.log(formattedDate);

このコードでは、初めにnew Date()を使って、現在の日付と時刻を取得しています。

この例では、getFullYear(), getMonth(), getDate(), getHours(), getMinutes(), getSeconds()などのメソッドを利用して、それぞれの要素を取得しています。

また、padStartメソッドを用いることで、1桁の場合に2桁表示になるように0を追加してフォーマットを整えています。

このコードを実行すると、例えば「2023-08-27 14:32:45」という形式で現在の日付と時刻がコンソールに表示されます。

これにより、年月日と時分秒を組み合わせた形式での日時情報を簡単に取得することができます。

しかし、この方法だけでは様々なフォーマットやカスタマイズが求められる場面に対応するのは難しいです。

例えば、月名を英語の短縮形で表示したい、曜日を含めたい、などの要望に対応するには、さらに高度なライブラリや関数の利用が推奨されます。

●注意点と対処法

TypeScriptで日付や時刻を取得、またはフォーマットする際には、いくつかの注意点が存在します。

これらを理解し、適切な対処を行うことで、思わぬエラーや問題を防ぐことができます。

ここでは、日常的によく遭遇する問題やその解決策を詳しく解説していきます。

○注意点1:タイムゾーンの違い

日付や時刻に関連する操作を行う際、タイムゾーンの違いは非常に重要な要因となります。

特定の地域や国に基づいた時間を取得する場合、タイムゾーンの違いを考慮しなければなりません。

このコードでは、Dateオブジェクトを利用して現在の日付と時刻を取得しています。

しかし、取得される時間は実行環境のローカルタイムゾーンに基づいています。

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

実行すると、実行環境のタイムゾーンに応じた現在の日付と時刻が出力されます。

○対処法1:UTC時間の使用

タイムゾーンの違いを気にせず、一定の時間を取得するためには、UTC(協定世界時)を利用するとよいでしょう。

このコードでは、DateオブジェクトのtoUTCStringメソッドを利用してUTC時間を取得しています。

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

このようにすることで、全世界で共通の時間を取得することができます。

○注意点2:デフォルトのフォーマットの違い

Dateオブジェクトのデフォルトの文字列形式は、実行環境やブラウザによって異なることがあります。

このコードでは、Dateオブジェクトをそのまま文字列に変換しています。

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

しかし、出力される日付や時刻のフォーマットは、実行環境によって異なる可能性があります。

○対処法2:明示的なフォーマットの指定

一貫性を持たせるため、明示的にフォーマットを指定して日付や時刻を取得することがおすすめです。

多くのライブラリやモジュールが提供されているので、適切なものを選択して利用するとよいでしょう。

○注意点3:ミリ秒単位の計算誤差

JavaScriptやTypeScriptでは、浮動小数点数を使用して日付や時刻を計算する際、ミリ秒単位での計算誤差が発生する可能性があります。

この問題を避けるためには、整数部分のみで計算を行ったり、適切なライブラリを使用して精度を保つ必要があります。

●TypeScriptの現在時刻取得のカスタマイズ方法

TypeScriptで現在時刻を取得する際に、さらなるカスタマイズを行う方法を紹介します。

具体的なコードとその実行結果を交えながら、進めていきます。

○カスタマイズ1:時刻の精度をミリ秒まで取得

TypeScriptでは、Dateオブジェクトのメソッドを使用して、現在のミリ秒までの精度を持つ時刻を取得することができます。

const now = new Date();
const milliseconds = now.getMilliseconds();
console.log(`現在のミリ秒: ${milliseconds}`);

このコードではDateオブジェクトを使って現在の時刻を取得し、getMillisecondsメソッドでミリ秒を取得しています。

例として、取得したミリ秒が582だった場合、コンソールには「現在のミリ秒: 582」と表示されます。

○カスタマイズ2:特定のタイムゾーンに基づいた現在時刻の取得

異なるタイムゾーンに基づいて現在時刻を取得する際には、Intl.DateTimeFormatオブジェクトを利用する方法があります。

const options = { timeZone: 'Asia/Tokyo', hour: '2-digit', minute: '2-digit' };
const formatter = new Intl.DateTimeFormat('ja-JP', options);
console.log(`東京の現在時刻: ${formatter.format(new Date())}`);

このコードでは、Intl.DateTimeFormatを使って、日本のタイムゾーンである’Asia/Tokyo’に基づく現在の時刻を取得しています。

例えば、東京の時刻が14:30だった場合、コンソールには「東京の現在時刻: 14:30」と表示されます。

○カスタマイズ3:現在の曜日を取得

現在の曜日を日本語で取得する場合、次の方法を利用できます。

const options = { weekday: 'long' };
const formatter = new Intl.DateTimeFormat('ja-JP', options);
console.log(`今日は${formatter.format(new Date())}です。`);

このコードでは、Intl.DateTimeFormatを使って、現在の曜日を日本語で取得しています。

例として、取得した曜日が「金曜日」だった場合、コンソールには「今日は金曜日です。」と表示されます。

まとめ

TypeScriptを使用して現在の日付と時刻を取得するための多彩な方法を取り上げてきました。

これらの方法は、初心者から上級者までのTypeScript開発者が日常的に利用するものであり、特にWeb開発やアプリ開発においては必要不可欠なテクニックといえるでしょう。

今回の解説を通じて、TypeScriptを用いた日付や時刻の取得・操作に関する知識や技術が豊富になったことを願っています。

実際の開発現場での日付・時刻操作のニーズに応じて、今回紹介した方法を参考にして、最適なコードを書くための手助けとしてください。