#author("2020-04-30T21:22:27+09:00","","") #author("2020-04-30T21:22:54+09:00","","") #navi(../) * UNIX時間への変換・DateTimeOffset [#r2a51750] DateTimeやDateTimeOffisetで持っている年月日時分秒をUNIX時間に変換する C#, Visual Basic のサンプルコードの紹介です。~ ''DateTimeOffset''の''ToUnixTimeSeconds'', ''ToUnixTimeMilliseconds''を使用すると簡単にUNIX TIMEを取得できます。 #contents * 関連サイト [#dc15e426] -[[Microsoft .NET | DateTimeOffset 構造体>https://docs.microsoft.com/ja-jp/dotnet/api/system.datetimeoffset]] -[[Microsoft .NET | DateTime 構造体>https://docs.microsoft.com/ja-jp/dotnet/api/system.datetime]] #htmlinsert(windev-top.html) * 関連記事 [#zb7234ff] -[[UNIX時間をDateTimeOffset, DateTimeにする>.NET/UNIX時間をDateTimeOffset, DateTimeにする]] * 動作確認環境 [#ie618693] -Windows 10 -Visual Studio 2019 -.NET Core 3.1 -コンソールアプリケーション #htmlinsert(windev-top.html) * UNIX時間に変換するサンプルコード [#r1c0d3aa] 以下に C#, Visual Basicのサンプルコードと実行結果を記します。~ 3つの日時をUNIX時間に変換しています。 + DateTimeOffset に JST(日本標準時)を指定しUNIX時間を取得・表示する。 + DateTimeOffset に UTC(協定世界時)を指定しUNIX時間を取得・表示する。 + DateTime を DateTimeOffset にし、UNIX時間を取得・表示する。~ ローカル時間(JST)が引き継がれているのが確認できます。 ** C# [#z3ede379] 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 [#x9ca6326] 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 ** 実行結果 [#q93b4e13] 上記サンプルコード実行結果のキャプチャになります。 #ref(run.png) 以上、DateTimeOffset の ToUnixTimeSeconds, ToUnixTimeMilliseconds を使ってUNIX時間を取得するサンプルコードの紹介でした。 #htmlinsert(windev-btm.html)