C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#で現在のDateTimeオブジェクトの値をWindowsファイル時間に変換する方法

C#では、DateTime.ToFileTime()メソッドを使用することで、DateTimeオブジェクトの値をWindowsファイル時間に変換できます。この記事では、その使い方を具体的なコード例とともに解説します。

Windowsファイル時間とは

Windowsファイル時間とは、西暦1601年1月1日午前0時(UTC)からの経過時間を、100ナノ秒間隔の数値(long型)で表したものです。NTFSファイルシステムなどでファイルの作成日時や更新日時を管理するために内部的に使用されています。

ToFileTime()メソッドの基本構文

public long ToFileTime();

戻り値はlong型で、変換後のWindowsファイル時間が返されます。なお、変換対象の日時が1601年1月1日より前の場合や、範囲外の値の場合にはArgumentOutOfRangeExceptionがスローされる点に注意してください。

例1:現在の日時をWindowsファイル時間に変換する

まず、現在のシステム日時(DateTime.Now)をWindowsファイル時間に変換する例を見てみましょう。

using System;
public class Demo {
   public static void Main() {
      DateTime d = DateTime.Now;
      Console.WriteLine("Date = {0}", d);
      long res = d.ToFileTime();
      Console.WriteLine("Windows file time = {0}", res);
   }
}

出力結果

Date = 10/16/2019 8:17:26 AM
Windows file time = 132156874462559390

このように、DateTime.Nowで取得した現在日時が、大きな整数値であるWindowsファイル時間へと変換されていることが確認できます。

例2:指定した日時をWindowsファイル時間に変換する

次に、任意の日時を指定して変換する例です。ここでは2019年5月10日6時10分25秒を指定しています。

using System;
public class Demo {
   public static void Main() {
      DateTime d = new DateTime(2019, 05, 10, 6, 10, 25);
      Console.WriteLine("Date = {0}", d);
      long res = d.ToFileTime();
      Console.WriteLine("Windows file time = {0}", res);
   }
}

出力結果

Date = 5/10/2019 6:10:25 AM
Windows file time = 132019422250000000

補足:UTCでの変換について

ToFileTime()メソッドは、ローカル時刻を考慮して変換を行います。もし協定世界時(UTC)ベースで明示的に変換したい場合は、ToUniversalTime()を組み合わせるか、ToFileTimeUtc()メソッドを使用するとよいでしょう。

long utcFileTime = d.ToFileTimeUtc();

また、逆にWindowsファイル時間からDateTimeオブジェクトを復元したい場合は、DateTime.FromFileTime()またはDateTime.FromFileTimeUtc()メソッドを使います。

まとめ

  • DateTime.ToFileTime()メソッドで、DateTimeオブジェクトをWindowsファイル時間(long型)に変換できる。
  • Windowsファイル時間は1601年1月1日(UTC)起点の100ナノ秒単位の経過時間。
  • UTC基準で扱う場合はToFileTimeUtc()を使用する。
  1. Tkinterのエントリウィジェットに現在の時刻を挿入するにはどうすればよいですか?

    Pythonで日付や時刻を扱う際には、標準ライブラリとして提供されている「datetime」パッケージを使用します。datetimeパッケージを活用することで、現在の日付の表示はもちろん、datetimeオブジェクトの操作や加工も可能になり、アプリケーションにさまざまな機能を追加できます。Tkinterのウィンドウに現在の日付を表示するには、まずdatetimeモジュールを環境にインポートします。インポートが完了したら、そのオブジェクトのインスタンスを作成し、Entryウィジェットを使って画面に表示しましょう。サンプルコード以下は、Entryウィジェットに現在の日付を表示する具体例です。# 必

  2. 7-Zip vs WinRAR徹底比較!Windows 11で使うべき最強のファイル圧縮・解凍ソフトはどっち?

    ファイルの圧縮・解凍に使っているのは「7-Zip」ですか?それとも「WinRAR」ですか?Windows 10やWindows 11で自分に合った機能を備えているのはどちらなのでしょうか。この記事では、両者のメリットとデメリットを詳しく比較していきます。 大量のファイルを別のPCへ移動したり転送したりする必要があるとき、事前にファイルを圧縮してから送るのが一般的な方法です。そんなときに活躍するのがファイルアーカイバー(圧縮・解凍ソフト)ですが、Redditでは「7-Zip対WinRAR」の比較議論が繰り広げられ、どちらがより効率的で「ベストな選択」なのかが話題になっています。 7-Zipの特徴