DateTime,DateTimeOffset,Timestamp備忘

1. 測試一

代碼
static void Main(string[] args)
{
    var now_timestamp = DateTimeOffset.Now.ToUnixTimeSeconds();
    var utc_now_timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
    if (now_timestamp == utc_now_timestamp) Console.WriteLine("always equals");
    Console.WriteLine($"now timestamp :{now_timestamp}");
    Console.WriteLine($"now timestamp datetime offset:{DateTimeOffset.FromUnixTimeSeconds(now_timestamp)}");
    Console.WriteLine($"now timestamp datetime offset to datetime:{DateTimeOffset.FromUnixTimeSeconds(now_timestamp).DateTime}");
    Console.WriteLine($"now timestamp datetime offset to local datetime:{DateTimeOffset.FromUnixTimeSeconds(now_timestamp).LocalDateTime}");
    Console.WriteLine($"utc_now timestamp :{utc_now_timestamp}");
    Console.WriteLine($"utc now timestamp datetime offset:{DateTimeOffset.FromUnixTimeSeconds(utc_now_timestamp)}");
    Console.WriteLine($"utc now timestamp datetime offset to datetime:{DateTimeOffset.FromUnixTimeSeconds(utc_now_timestamp).DateTime}");
    Console.WriteLine($"utc now timestamp datetime offset to local datetime:{DateTimeOffset.FromUnixTimeSeconds(utc_now_timestamp).LocalDateTime}");
}
結果

在這裏插入圖片描述

2. 測試二

代碼
static void Main(string[] args)
{
    Test();
}

public static void Test()
{
    //Thread.CurrentThread.CurrentCulture = new CultureInfo("UTC");
    var utc_now = DateTimeOffset.UtcNow;
    var utc_now_timestamp = utc_now.ToUnixTimeSeconds();
    var now = DateTimeOffset.Now;
    var now_timestamp = now.ToUnixTimeSeconds();
    Console.WriteLine($"utc now:{utc_now}");
    Console.WriteLine($"utc now timestamp:{utc_now_timestamp}");
    Console.WriteLine($"now:{now}");
    Console.WriteLine($"now timestamp:{now_timestamp}");

    Console.WriteLine($"datetime now:{DateTime.Now}");
    Console.WriteLine($"datetime utc now:{DateTime.UtcNow}");

    Console.WriteLine("我是分割線---------------");
    var now_convert = ConvertStampToDateTime(now_timestamp);
    Console.WriteLine($"now convert:{now_convert}");
    Console.WriteLine("我是分割線---------------");

    var now_offset = ConvertStampToDateTimeUpgrade(now_timestamp);
    Console.WriteLine($"now offset:{now_offset}");
    Console.WriteLine($"now offset date:{now_offset.Date}");
    Console.WriteLine($"now offset datetime:{now_offset.DateTime}");
    Console.WriteLine($"now offset local datetime:{now_offset.LocalDateTime}");
    Console.WriteLine($"now offset utc datetime:{now_offset.UtcDateTime}");
}

public static DateTime ConvertStampToDateTime(long timestamp)
{
    //var dtStart = TimeZoneInfo.ConvertTime(new DateTime(1970, 1, 1), TimeZoneInfo.Local);
    var dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
    dtStart = TimeZoneInfo.ConvertTimeFromUtc(new DateTime(1970, 1, 1),TimeZoneInfo.Local);
    return dtStart.Add(TimeSpan.FromTicks(long.Parse(timestamp + "0000000")));
}

public static DateTimeOffset ConvertStampToDateTimeUpgrade(long timestamp)
{
    return DateTimeOffset.FromUnixTimeSeconds(timestamp);
}
結果

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章