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

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

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

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

生徒

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

先生

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

生徒

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

先生

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

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

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

UNIXタイムスタンプとは「一九七〇年一月一日午前零時零分零秒(世界協定時)」を基準として、そこから何秒経過したかを数字で表したものです。例えば、ある時刻が「一七〇〇〇〇〇〇〇〇」というような大きな数字になっている場合、それは基準日からその秒数だけ時間が進んでいるという意味です。ふだん目にする年月日とは違う形ですが、計算がしやすく、世界中で幅広く使われています。C#ではこの秒数を簡単に変換できるので、日時を扱うプログラムではよく利用されます。

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

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

C#でUNIXタイムスタンプを取得したい場合、DateTimeOffsetという構造体を使うと、とても簡単に現在の秒数を取り出せます。プログラムで時刻を保存したり、外部のサービスとデータをやりとりするときに役に立ちます。以下は現在時刻をUNIXタイムスタンプとして取り出す例です。


long unixTime = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
Console.WriteLine(unixTime);

このコードを実行すると、基準からの秒数が出力されます。数字が大きくて驚くかもしれませんが、プログラムではこの大きな数値がとても扱いやすいのです。

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

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

次に、UNIXタイムスタンプを普通の年月日や時間に戻す方法を解説します。数字のままでは読みづらいので、人が理解しやすい形に変換する場面が多いです。C#ではDateTimeOffset.FromUnixTimeSecondsを使えばすぐに元の時刻に変えることができます。


long unixTime = 1700000000;
DateTimeOffset date = DateTimeOffset.FromUnixTimeSeconds(unixTime);
Console.WriteLine(date);

このように、数値を渡すだけで日時の形式に変換できます。変換後は通常のDateTimeと同じように操作することが可能です。

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

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

今度は、人が読める日時からUNIXタイムスタンプへ変換する方法です。アプリでユーザーが入力した年月日や、システムが生成した日時をUNIX形式へ変えるときに使います。


DateTime dt = new DateTime(2024, 5, 1, 12, 0, 0, DateTimeKind.Utc);
long unixTime = ((DateTimeOffset)dt).ToUnixTimeSeconds();
Console.WriteLine(unixTime);

ここでは世界協定時として扱うためにDateTimeKind.Utcを指定しています。時間の扱いはズレが発生しやすいので、基準をそろえることが重要になります。

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

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

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


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

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

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

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

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

カテゴリの一覧へ
新着記事
C#でタイムスタンプの精度を上げるためのテクニックを徹底解説!(初心者向け)
C#のコーディング規約(C# Coding Conventions)とは?読みやすいコードを書くための基本ルール
C#のデストラクタ(ファイナライザ)の使い方と注意点をやさしく解説!
COBOL資産のバージョン管理とは?初心者でもわかる保守と管理の基本
人気記事
No.1
Java&Spring記事人気No1
COBOLで学ぶSELECT文のORDER BY・GROUP BY活用法!初心者でもわかるデータ集計
No.2
Java&Spring記事人気No2
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.3
Java&Spring記事人気No3
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法
No.4
Java&Spring記事人気No4
COBOLで学ぶカーソル操作と複数行データ取得の基本
No.5
Java&Spring記事人気No5
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#の数値型をマスターしよう!int・double・decimalの違いと使い方
No.7
Java&Spring記事人気No7
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.8
Java&Spring記事人気No8
C#の日付型(DateTime)と基本的な使い方を解説|初心者向け入門ガイド