カテゴリ: C# 更新日: 2026/03/22

C#でUNIXタイムスタンプを取得・変換する方法をわかりやすく解説!初心者向け

C#でUNIXタイムスタンプを取得・変換する方法
C#でUNIXタイムスタンプを取得・変換する方法

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

生徒

「C#でUNIXタイムスタンプっていう数字を見たんですが、これは何なんですか?」

先生

「UNIXタイムスタンプは、時間を数字で表す方法のひとつなんですよ。秒数で管理します。」

生徒

「数字で時間を表すってどういうことですか?普通なら年月日とか時間で見ると思ったんですが…」

先生

「確かに普段はそうですね。でもコンピューターの世界では、一つの基準日からの秒数で記録するほうが便利なことが多いんです。これをUNIXタイムスタンプと呼びます。C#でも簡単に扱えるので、一緒に見ていきましょう!」

1. UNIXタイムスタンプとは?

1. UNIXタイムスタンプとは?
1. UNIXタイムスタンプとは?

UNIXタイムスタンプとは、「1970年1月1日 午前0時0分0秒(世界協定時)」を基準として、 そこから何秒が経過したかを数値で表した時間の表現方法です。 私たちが普段使っている「2024年5月1日 12時」のような表記とは異なり、 コンピューター向けに時間をシンプルな数字として扱える点が特徴です。

例えば「1700000000」という数値は、「基準の日時から17億秒が経過している」 という意味になります。一見すると意味が分かりにくい数字ですが、 足し算や引き算だけで時間差を計算できるため、プログラムでは非常に便利です。 世界中で同じ基準を使うため、国や地域が違っても時刻を正確に共有できます。


// UNIXタイムスタンプの例(数値そのもの)
long unixTimeSample = 1700000000;
Console.WriteLine(unixTimeSample);

このように、UNIXタイムスタンプは「日時を表すための共通ルール」と考えると理解しやすいでしょう。 C#では、この数値を簡単に取得したり、元の日時に戻したりできるため、 日時を扱うプログラムの基礎として覚えておくと安心です。

2. C#で現在のUNIXタイムスタンプを取得する方法

2. C#で現在のUNIXタイムスタンプを取得する方法
2. C#で現在のUNIXタイムスタンプを取得する方法

C#で「今この瞬間のUNIXタイムスタンプ」を取得したい場合は、 DateTimeOffsetを使う方法がもっとも分かりやすく、安全です。 UNIXタイムスタンプは世界協定時(UTC)を基準にしているため、 現在時刻もUTCとして取得するのが基本になります。

初心者の方は「今の日時を数字に変換する」と考えるとイメージしやすいでしょう。 この数値は、ログの記録やデータの保存、外部APIとの通信など、 さまざまな場面で使われます。


// 現在のUNIXタイムスタンプ(秒)を取得する例
long unixTime = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
Console.WriteLine(unixTime);

このコードでは、まず現在のUTC時刻を取得し、 そこからUNIXタイムスタンプ(秒)へ変換しています。 実行すると「1700000000」のような大きな数字が表示されますが、 これは1970年1月1日からの経過秒数を表しています。

数字だけを見ると難しく感じるかもしれませんが、 プログラムにとっては非常に扱いやすい形式です。 まずは「C#ではこの一行で現在のUNIXタイムスタンプが取れる」 という点をしっかり覚えておきましょう。

3. UNIXタイムスタンプをC#の日時に変換する

3. UNIXタイムスタンプをC#の日時に変換する
3. UNIXタイムスタンプをC#の日時に変換する

次に、UNIXタイムスタンプ(秒の数値)を、私たちが普段見慣れている「年月日・時刻」の形に戻してみましょう。 タイムスタンプは計算には便利ですが、そのままだと人間には読みづらいので、 画面に表示したり、ログを確認したりする場面では日時へ変換することがよくあります。

C#ではDateTimeOffset.FromUnixTimeSecondsに数値を渡すだけで変換できます。 まずは「数値→日時」に変えられる、という流れを押さえるのがポイントです。


// UNIXタイムスタンプ(秒)を日時に変換する基本例
long unixTime = 1700000000;
DateTimeOffset date = DateTimeOffset.FromUnixTimeSeconds(unixTime);
Console.WriteLine(date);

実行すると、タイムスタンプに対応する日時が出力されます。 ここで表示されるのはDateTimeOffset型なので、 「日時として扱える形に戻った」と考えて大丈夫です。 もし画面に見やすく表示したい場合は、次のように書式を指定して出すこともできます。


// 見やすい形式に整えて表示する例
Console.WriteLine(date.ToString("yyyy/MM/dd HH:mm:ss"));

このように変換しておけば、外部サービスから受け取ったUNIXタイムスタンプでも、 何月何日の何時なのかをすぐ確認できます。 「数値を日時に戻して読める状態にする」という使い方はとても頻繁に登場するので、 基本の書き方として覚えておくと安心です。

4. DateTimeからUNIXタイムスタンプへ変換する方法

4. DateTimeからUNIXタイムスタンプへ変換する方法
4. DateTimeからUNIXタイムスタンプへ変換する方法

ここでは、普段の「年月日・時刻」の形で持っているDateTimeを、 UNIXタイムスタンプ(秒)に変換する方法を紹介します。 たとえばユーザーが入力した日時を保存したいときや、外部サービスへ送るデータを UNIXタイムスタンプ形式にそろえたいときに、この変換が役立ちます。

変換の流れはシンプルで、DateTimeDateTimeOffsetにしてから ToUnixTimeSecondsを呼び出すだけです。 ただし、UNIXタイムスタンプはUTC基準なので、DateTimeKind.Utcを指定しておくと 「思ったより9時間ズレた…」のような混乱を防ぎやすくなります。


// DateTime(UTC)をUNIXタイムスタンプ(秒)に変換する例
DateTime dt = new DateTime(2024, 5, 1, 12, 0, 0, DateTimeKind.Utc);
long unixTime = ((DateTimeOffset)dt).ToUnixTimeSeconds();
Console.WriteLine(unixTime);

このコードでは、指定した日時を「1970年1月1日から何秒経ったか」という数値に変換しています。 出力されるのは大きな数字ですが、保存や比較、送受信にはとても便利です。 まずは「DateTime → UNIXタイムスタンプはこの形で変換できる」と覚えておくと、 日時の扱いがぐっと楽になります。

● 変換前の日時も一緒に確認する例


// 元の日時と変換後の数値を並べて表示する例
Console.WriteLine($"DateTime(UTC): {dt:yyyy/MM/dd HH:mm:ss}");
Console.WriteLine($"UNIX Time: {unixTime}");

こうして並べて表示すると、「この日時がこの秒数になる」という対応関係がつかみやすくなります。 初心者の方は、まずは固定の日付で試してから、実際の入力値や現在時刻へ広げていくのがおすすめです。

5. ミリ秒のUNIXタイムスタンプを扱う場合

5. ミリ秒のUNIXタイムスタンプを扱う場合
5. ミリ秒のUNIXタイムスタンプを扱う場合

サービスによっては、秒ではなく「ミリ秒」でUNIXタイムスタンプを扱うことがあります。ミリ秒は一秒を千の単位で表すため、より細かい時間を記録できます。C#ではミリ秒単位のタイムスタンプも簡単に取得できます。


long unixMilli = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
Console.WriteLine(unixMilli);

秒単位より長い数字になりますが、仕組みは同じです。サービス連携やログの保存など、細かい時刻が必要なケースでよく利用されます。

6. UNIXタイムスタンプを使うメリット

6. UNIXタイムスタンプを使うメリット
6. UNIXタイムスタンプを使うメリット

UNIXタイムスタンプがさまざまな場面で利用されている理由として、時間の計算がしやすい点が挙げられます。年月日形式だと月の長さやうるう年など複雑な要素がありますが、秒数なら単純な数字の計算で済みます。また世界中で統一された基準で扱えるため、異なる地域のシステムと通信するときにも便利です。C#はこの形式を標準でサポートしているため、開発の幅が大きく広がります。

まとめ

まとめ
まとめ

UNIXタイムスタンプの全体像を振り返ろう

この記事では、C#を使ってUNIXタイムスタンプを取得・変換する方法について、基礎から丁寧に解説してきました。 UNIXタイムスタンプとは、1970年1月1日午前0時0分0秒を基準として、そこから何秒、または何ミリ秒が経過したかを数値で表したものです。 普段目にする年月日や時刻とは見た目が大きく異なりますが、コンピューターにとっては非常に扱いやすく、世界共通で利用できるという大きな利点があります。

C#では DateTimeOffset を使うことで、現在のUNIXタイムスタンプを簡単に取得できました。 また、取得した数値を再び日時に戻すことで、人間にとって分かりやすい形で表示することもできました。 さらに、DateTime からUNIXタイムスタンプへ変換する方法や、秒単位だけでなくミリ秒単位で扱うケースについても確認しました。 これらの操作は、ログ管理、外部API連携、データベース保存、時間差の計算など、実際の開発現場で頻繁に登場します。

特に重要なのは、UNIXタイムスタンプが世界協定時を基準にしているという点です。 日本時間だけを前提に考えてしまうと、想定外の時間ズレが発生することがあります。 そのため、C#で日時を扱う際には、UTCを意識しながら DateTimeKind.Utc を指定したり、 DateTimeOffset を活用したりすることが、安全で確実な方法と言えるでしょう。

まとめとして確認したい基本サンプル

最後に、この記事で学んだ内容を一度に確認できる簡単なサンプルを見ておきましょう。 現在時刻をUNIXタイムスタンプで取得し、その数値を再び日時へ変換して表示する流れです。 実際のプログラムでも、このような形で使われることがとても多いです。


// 現在のUNIXタイムスタンプを取得
long unixTime = DateTimeOffset.UtcNow.ToUnixTimeSeconds();

// UNIXタイムスタンプを日時に変換
DateTimeOffset date = DateTimeOffset.FromUnixTimeSeconds(unixTime);

// 結果を表示
Console.WriteLine($"UNIX Time : {unixTime}");
Console.WriteLine($"DateTime  : {date:yyyy/MM/dd HH:mm:ss}");

このコードを動かすことで、「今この瞬間」がどのような数値として管理され、 どのように日時へ戻せるのかを一目で確認できます。 UNIXタイムスタンプの考え方に慣れるためにも、ぜひ自分の環境で何度か実行してみてください。

先生と生徒の振り返り会話

生徒

「最初はUNIXタイムスタンプがただの大きな数字にしか見えなかったんですが、 秒数で時間を管理しているって分かると、だんだん意味がつかめてきました。」

先生

「そうですね。最初は戸惑いますが、考え方が分かればとても便利な仕組みです。 特に時間の差を計算するときは、数字だけで扱えるのが強みですね。」

生徒

「C#だと DateTimeOffset を使えば、 取得も変換もすごく簡単に書けるのが印象的でした。 ログとかAPI連携で使われている理由も分かった気がします。」

先生

「その理解はとても大切です。UNIXタイムスタンプは、 初心者から実務まで幅広く使われる考え方なので、 今回学んだ内容をしっかり身につけておくと、今後の開発が楽になりますよ。」

生徒

「これから日時を扱うときは、UNIXタイムスタンプとUTCを意識して書いてみます! だいぶ自信がつきました。」

今回のまとめを通して、UNIXタイムスタンプの基本的な考え方と、 C#での具体的な扱い方を一通り理解できたはずです。 日時処理は最初につまずきやすい分野ですが、基礎を押さえておけば確実に武器になります。 ぜひ、実際のプログラムの中で積極的に使ってみてください。

カテゴリの一覧へ
新着記事
New1
Azure
Azure SQL Databaseのリードスケールアウトとは?参照負荷分散でパフォーマンスを高速化する方法
New2
C#
C#プログラムの実行方法まとめ!Visual Studio・コマンドライン・.NET CLIの使い方
New3
C#
C#でHello Worldを表示する方法を完全ガイド!初心者でも1行から始められる入門講座
New4
COBOL
Micro Focus COBOLの特徴と使い方を徹底解説!初心者でもわかるIDE活用法
人気記事
No.1
Java&Spring記事人気No1
Azure
Azure Bastionの使い方を徹底解説!踏み台サーバー不要で安全にRDP/SSH接続
No.2
Java&Spring記事人気No2
C#
C#のプロパティとは?get/setアクセサの書き方と使い分け
No.3
Java&Spring記事人気No3
C#
C#の文字列を数値に変換する方法(int.Parse・TryParse)をわかりやすく解説!
No.4
Java&Spring記事人気No4
C#
C#でswitch式を使う方法!C# 8.0以降の新機能を解説
No.5
Java&Spring記事人気No5
C#
C#の日付型(DateTime)と基本的な使い方を解説|初心者向け入門ガイド
No.6
Java&Spring記事人気No6
C#
C#で文字列が数値か判定する方法を解説!char.IsDigitやTryParseの基本
No.7
Java&Spring記事人気No7
C#
C#のデリゲートとは?メソッドを変数のように扱う基本を解説
No.8
Java&Spring記事人気No8
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本