カテゴリ: C# 更新日: 2025/11/28

C#でタイムゾーンを扱う方法(TimeZoneInfoクラス)を徹底解説!初心者でもわかる時間変換の基本

C#でタイムゾーンを扱う方法(TimeZoneInfoクラス)
C#でタイムゾーンを扱う方法(TimeZoneInfoクラス)

先生と生徒の会話形式で理解しよう

生徒

「世界の時間って国ごとに違うって聞いたんですが、C#でもその違いを扱えるんですか?」

先生

「もちろんできますよ。C#にはTimeZoneInfoクラスという便利な仕組みがあって、タイムゾーンの変換や取得が簡単にできます。」

生徒

「タイムゾーンってそもそも何ですか?時計の種類みたいなものですか?」

先生

「良いところに気づきましたね。タイムゾーンは『地域ごとの時刻のルール』のことです。日本とアメリカでは時差があるので、その違いを管理する仕組みだと考えるとわかりやすいですよ。」

生徒

「なるほど…。その仕組みを使って時間を変換できるんですね?」

先生

「その通りです。それでは、TimeZoneInfoの基本から一緒に学んでいきましょう!」

1. TimeZoneInfoとは?

1. TimeZoneInfoとは?
1. TimeZoneInfoとは?

C#のTimeZoneInfoクラスは、異なる国や地域の時刻を扱うためのクラスです。 世界には日本時間(JST)、アメリカの太平洋標準時(PST)、協定世界時(UTC)など多くの時間の基準があります。 これらは地域ごとに異なるため、コンピューターが日時を正しく扱うには、タイムゾーンの情報が必要になります。

特にプログラミングでは、ログ管理・予約日時管理・オンラインサービス・世界対応アプリなどで「正しい時刻」が重要になります。 TimeZoneInfoを利用することで「どの地域の時間なのか」を明確に管理でき、時差の計算も自動で行ってくれます。

2. ローカル(現在のPC)のタイムゾーンを取得する

2. ローカル(現在のPC)のタイムゾーンを取得する
2. ローカル(現在のPC)のタイムゾーンを取得する

最初に、自分のコンピューターが設定しているタイムゾーンを取得してみましょう。 日本のPCなら通常「Tokyo Standard Time」が返ってきます。 以下のサンプルでは、PCの標準タイムゾーンを確認します。


var localZone = TimeZoneInfo.Local;
Console.WriteLine(localZone.DisplayName);

(例) (UTC+09:00) Osaka, Sapporo, Tokyo

このように、現在の環境がどの地域の時刻設定なのかを簡単に取得できます。 プログラミング初心者でも、まずはローカルタイムゾーンを確認するところから理解が深まります。

3. 特定の地域のタイムゾーンを取得する

3. 特定の地域のタイムゾーンを取得する
3. 特定の地域のタイムゾーンを取得する

世界の時刻を扱うには、他国のタイムゾーンを指定して取得する必要があります。 タイムゾーンには固有の識別子(ID)があり、IDを指定して取得します。

例えば、アメリカの太平洋標準時を取得するには次のように書きます。


var pstZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
Console.WriteLine(pstZone.DisplayName);

代表的なIDには以下のものがあります。

  • Tokyo Standard Time(日本)
  • Pacific Standard Time(アメリカ西海岸)
  • UTC(世界の基準時間)
  • China Standard Time(中国)

IDを指定するだけで必要な地域のタイムゾーンを使えるため、国際的なアプリを作るときに必須の知識になります。

4. 時刻を別のタイムゾーンに変換する方法

4. 時刻を別のタイムゾーンに変換する方法
4. 時刻を別のタイムゾーンに変換する方法

ある時刻を他の地域の時刻へ変換したい場合、TimeZoneInfo.ConvertTimeを使います。 これは日常の例でいうと「日本の時間をアメリカの時間に直す」作業です。


var now = DateTime.Now;
var pstZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
var pstTime = TimeZoneInfo.ConvertTime(now, pstZone);

Console.WriteLine(pstTime);

ConvertTimeを使うことで、時差を自動的に計算してくれるため、自分で計算する必要はありません。 プログラミング初心者でも、安全かつ正確に時刻を扱えるようになります。

5. UTC(協定世界時)を利用したタイムゾーン管理

5. UTC(協定世界時)を利用したタイムゾーン管理
5. UTC(協定世界時)を利用したタイムゾーン管理

世界中のシステムで一般的に使われる時間の基準がUTC(協定世界時)です。 まずUTCで時刻を保存し、必要に応じて地域の時間に変換するという方法がよく使われます。


var utcNow = DateTime.UtcNow;
var tokyoZone = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
var tokyoTime = TimeZoneInfo.ConvertTimeFromUtc(utcNow, tokyoZone);

Console.WriteLine(tokyoTime);

この方法は「世界中のユーザーが使うアプリ」で特に重要です。 たとえば、国際的なゲーム・SNS・予約システムなどは、UTCを基準に時刻を管理します。

6. サマータイム(DST)にも自動で対応

6. サマータイム(DST)にも自動で対応
6. サマータイム(DST)にも自動で対応

一部の国では、夏の間だけ時刻を1時間早めるサマータイム(DST)が採用されています。 日本では使われていないため馴染みがないですが、アメリカやヨーロッパでは一般的です。

TimeZoneInfoは、このサマータイムの切り替えも自動で処理してくれるため、初心者でも安心して時間計算ができます。 手動で調整する必要がないのは、非常に便利なポイントです。

7. タイムゾーンの一覧を取得する

7. タイムゾーンの一覧を取得する
7. タイムゾーンの一覧を取得する

PCが対応している全てのタイムゾーンを確認したい場合は、次の方法が使えます。


foreach (var zone in TimeZoneInfo.GetSystemTimeZones())
{
    Console.WriteLine(zone.Id);
}

世界の国や地域のタイムゾーンを一覧で確認できるため、アプリの設定画面などで活用できます。

カテゴリの一覧へ
新着記事
New1
C#
C#のメモリ管理とガーベジコレクションの基礎を理解しよう
New2
C#
C#の参照型と値型の違いを初心者向けにやさしく解説!
New3
C#
C#のクエリ式とメソッド式の書き換え方を完全ガイド!LINQの2つの書き方をマスター
New4
C#
C#の戻り値にタプルを使う方法!複数の値を返すテクニック
人気記事
No.1
Java&Spring記事人気No1
C#
C#で文字列が数値か判定する方法を解説!char.IsDigitやTryParseの基本
No.2
Java&Spring記事人気No2
C#
C#のLINQでOrderByを使った並び替えを完全ガイド!初心者でもわかるソート方法
No.3
Java&Spring記事人気No3
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.4
Java&Spring記事人気No4
C#
C#のrefとoutキーワードとは?引数の参照渡しを理解しよう
No.5
Java&Spring記事人気No5
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#
C#の引数と戻り値の基本!値を受け渡し・返す仕組みを理解しよう
No.7
Java&Spring記事人気No7
C#
C#のラムダ式の書き方と構文を初心者向けに完全解説
No.8
Java&Spring記事人気No8
C#
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方