บทนำ
เมธอด DateTimeOffset.ToUnixTimeSeconds() ใน C# ใช้คืนค่าจำนวนวินาทีที่ผ่านไปตั้งแต่ Unix epoch (1 มกราคม 1970 เวลา 00:00:00 UTC) จนถึงเวลาที่แสดงโดยอินสแตนซ์ DateTimeOffset นี้
ไวยากรณ์ (Syntax)
public long ToUnixTimeSeconds ();
ตัวอย่างที่ 1: วันที่ก่อน Unix epoch (ค่าลบ)
using System;
public class Demo
{
public static void Main()
{
DateTimeOffset dateTimeOffset = new DateTimeOffset(1967, 11, 11, 6, 15, 45, new TimeSpan(3, 0, 0));
Console.WriteLine("DateTimeOffset = {0}", dateTimeOffset);
Console.WriteLine("Number of seconds: " + dateTimeOffset.ToUnixTimeSeconds());
DateTimeOffset res = dateTimeOffset.ToOffset(new TimeSpan(-5, 0, 0));
Console.WriteLine("\nDateTimeOffset (updated) = {0}", res);
Console.WriteLine("Number of seconds: " + res.ToUnixTimeSeconds());
}
}
ผลลัพธ์
DateTimeOffset = 11/11/1967 6:15:45 AM +03:00 Number of seconds: -67553055 DateTimeOffset (updated) = 11/10/1967 10:15:45 PM -05:00 Number of seconds: -67553055
ตัวอย่างที่ 2: วันที่หลัง Unix epoch (ค่าบวก)
using System;
public class Demo
{
public static void Main()
{
DateTimeOffset dateTimeOffset = new DateTimeOffset(2019, 11, 11, 6, 15, 45, new TimeSpan(3, 0, 0));
Console.WriteLine("DateTimeOffset = {0}", dateTimeOffset);
Console.WriteLine("Number of seconds: " + dateTimeOffset.ToUnixTimeSeconds());
DateTimeOffset res = dateTimeOffset.ToOffset(new TimeSpan(-5, 0, 0));
Console.WriteLine("\nDateTimeOffset (updated) = {0}", res);
Console.WriteLine("Number of seconds: " + res.ToUnixTimeSeconds());
}
}
ผลลัพธ์
DateTimeOffset = 11/11/2019 6:15:45 AM +03:00 Number of seconds: 1573442145 DateTimeOffset (updated) = 11/10/2019 10:15:45 PM -05:00 Number of seconds: 1573442145
สรุป
เมธอด ToUnixTimeSeconds() คืนค่า Unix timestamp ในหน่วยวินาที (long) ซึ่งเป็นมาตรฐานในการแลกเปลี่ยนข้อมูลเวลาระหว่างระบบ ไม่ขึ้นอยู่กับโซนเวลา (ค่าจะเท่ากันแม้จะเปลี่ยน offset) ใช้ร่วมกับ DateTimeOffset.FromUnixTimeSeconds() เพื่อแปลงกลับ