บทนำ
เมธอด DateTimeOffset.ToFileTime() ใน C# ใช้แปลงค่าของอินสแตนซ์ DateTimeOffset ปัจจุบันให้เป็น Windows file time คืนค่าเป็น Int64 (long) ที่แสดงจำนวน 100-nanosecond intervals นับจาก 1 มกราคม 1601 (Windows epoch)
ไวยากรณ์ (Syntax)
public long ToFileTime ();
ตัวอย่างที่ 1: การแปลง DateTimeOffset ที่ระบุ
using System;
public class Demo
{
public static void Main()
{
DateTimeOffset dateTimeOffset1 = new DateTimeOffset(2019, 11, 10, 6, 20, 10, new TimeSpan(-5, 0, 0));
Console.WriteLine("DateTimeOffset = {0}", dateTimeOffset1);
int hash = dateTimeOffset1.GetHashCode();
long res = dateTimeOffset1.ToFileTime();
Console.WriteLine("DateTimeOffset HashCode = {0}", hash);
Console.WriteLine("Windows file time = {0}", res);
}
}
ผลลัพธ์
DateTimeOffset = 11/10/2019 6:20:10 AM -05:00 DateTimeOffset HashCode = -92293937 Windows file time = 132178584100000000
ตัวอย่างที่ 2: การแปลงเวลาปัจจุบัน
using System;
public class Demo
{
public static void Main()
{
DateTimeOffset dateTimeOffset1 = DateTimeOffset.Now;
Console.WriteLine("DateTimeOffset = {0}", dateTimeOffset1);
long res = dateTimeOffset1.ToFileTime();
Console.WriteLine("Windows file time = {0}", res);
}
}
ผลลัพธ์
DateTimeOffset = 10/16/2019 11:16:47 AM +00:00 Windows file time = 132156982075593442
สรุป
Windows file time ใช้ในระบบไฟล์ NTFS และ Windows API ต่างๆ ค่าจะเป็นจำนวน ticks (100-nanosecond intervals) จาก 1 มกราคม 1601 UTC สามารถแปลงกลับได้ด้วย DateTimeOffset.FromFileTime() เหมาะสำหรับการทำงานกับไฟล์ระบบ Windows และการโต้ตอบกับ Windows API