在c#中表示1900纪元的更简单的方法

本文关键字:更简单 方法 纪元 1900 表示 | 更新日期: 2023-09-27 18:06:29

有没有更简单的方法来计算这个?也许是通过。net内置的方法?

        var time = DateTime.Now.AddSeconds(8);
        var year = 10000000000000 * (ulong)(time.Year - 1900);
        var month = 100000000000 * (ulong)(time.Month - 1);
        var dayofyear = 100000000 * (ulong)(time.DayOfYear - 1);
        var day = (ulong)(time.Day * 1000000);
        var Hour = (ulong)(time.Hour * 10000);
        var Minute = (ulong)(time.Minute * 100);
        var Second = (ulong)(time.Second);
        var utcTime = year + month + dayofyear + day + Hour + Minute + Second;

可以是DateTime.Now.AddSeconds(8).AllMilliseconds吗?

我试过这些方法

            var test = (time - DateTime.MinValue).Milliseconds;
        var tes2t = (time - DateTime.MinValue).TotalMilliseconds;

在c#中表示1900纪元的更简单的方法

DateTime.MinValue不是1900。DateTime.MinValue的文档说:

该常数的值相当于公历0001年1月1日UTC的00:00:00.0000000。

大约比你想要的日期早1899年。你想这样做:

double milliseconds = ( time - new DateTime( 1900, 1, 1 ) ).TotalMilliseconds

编辑:正如Rick在评论中建议的那样,以下可能更适合您的需求:

var epoch = new DateTime( 1900, 1, 1, 0, 0, 0, DateTimeKind.Utc );
double milliseconds = ( time - epoch ).TotalMilliseconds;