有更简单的方法来计算吗?也许是通过内置于.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;
答案 0 :(得分:2)
DateTime.MinValue
不是1900. DateTime.MinValue
的文档说:
该常数的值相当于格里高利历中的00:00:00.0000000 UTC,1月1日,000。
这比您想要的日期早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;