このエントリーをはてなブックマークに追加


UNIX時間への変換・DateTimeOffset

DateTimeやDateTimeOffisetで持っている年月日時分秒をUNIX時間に変換する C#, Visual Basic のサンプルコードの紹介です。
DateTimeOffsetToUnixTimeSeconds, ToUnixTimeMillisecondsを使用すると簡単にUNIX TIMEを取得できます。

関連サイト

関連記事

動作確認環境

  • Windows 10
  • Visual Studio 2019
  • .NET Core 3.1
  • コンソールアプリケーション

UNIX時間に変換するサンプルコード

以下に C#, Visual Basicのサンプルコードと実行結果を記します。
3つの日時をUNIX時間に変換しています。

  1. DateTimeOffset に JST(日本標準時)を指定しUNIX時間を取得・表示する。
  2. DateTimeOffset に UTC(協定世界時)を指定しUNIX時間を取得・表示する。
  3. DateTime を DateTimeOffset にし、UNIX時間を取得・表示する。
    ローカル時間(JST)が引き継がれているのが確認できます。

C#

using System;

class Program
{
    static void Main(string[] args)
    {
        // JST
        TimeZoneInfo jst = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
        DateTimeOffset jst1970 = new DateTimeOffset(1970, 1, 1, 0, 0, 0, jst.BaseUtcOffset);
        Console.WriteLine(
            "JST : " + jst1970.ToString() +
            ", UnixTime(Seconds): " +
            jst1970.ToUnixTimeSeconds() +
            ", UnixTime(Milliseconds): " +
            jst1970.ToUnixTimeMilliseconds());

        // UTC
        DateTimeOffset utc1970 = new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeZoneInfo.Utc.BaseUtcOffset);
        Console.WriteLine(
            "UTC : " + utc1970.ToString() +
            ", UnixTime(Seconds): " +
            utc1970.ToUnixTimeSeconds() +
            ", UnixTime(Milliseconds): " +
            utc1970.ToUnixTimeMilliseconds());

        // DateTime -> DateTimeOffset
        DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0);
        DateTimeOffset dto;
        dto = dt;
        Console.WriteLine("DateTime->DateTimeOffset UnixTime(Seconds) : " + dto.ToUnixTimeSeconds());
    }
}

Visual Basic

Imports System

Module Program
    Sub Main(args As String())

        'JST
        Dim jst = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time")
        Dim jst1970 = New DateTimeOffset(1970, 1, 1, 0, 0, 0, jst.BaseUtcOffset)
        Console.WriteLine(
            "JST : " & jst1970.ToString &
            ", UnixTime(Seconds): " &
            jst1970.ToUnixTimeSeconds &
            ", UnixTime(Milliseconds): " &
            jst1970.ToUnixTimeMilliseconds)

        'UTC
        Dim utc1970 = New DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeZoneInfo.Utc.BaseUtcOffset)
        Console.WriteLine(
            "UTC : " & utc1970.ToString &
            ", UnixTime(Seconds): " &
            utc1970.ToUnixTimeSeconds &
            ", UnixTime(Milliseconds): " &
            utc1970.ToUnixTimeMilliseconds)

        'DateTime -> DateTimeOffset
        Dim dt As DateTime = New DateTime(1970, 1, 1, 0, 0, 0)
        Dim dto As DateTimeOffset
        dto = dt
        Console.WriteLine("DateTime->DateTimeOffset UnixTime(Seconds) : " & dto.ToUnixTimeSeconds)

    End Sub

End Module

実行結果

上記サンプルコード実行結果のキャプチャになります。

run.png

以上、DateTimeOffset の ToUnixTimeSeconds, ToUnixTimeMilliseconds を使ってUNIX時間を取得するサンプルコードの紹介でした。


添付ファイル: filerun.png 179件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-04-30 (木) 21:22:54