在C#中如何获取纪元时间?

155

请在此处查看问题和答案:https://dev59.com/HnE85IYBdhLWcg3wNw14#56363742 - Vinod Srivastav
16
.NET 4.6及其以上版本的新答案是:使用DateTimeOffset.Now.ToUnixTimeSeconds() - oferei
1个回答

238
TimeSpan t = DateTime.UtcNow - new DateTime(1970, 1, 1);
int secondsSinceEpoch = (int)t.TotalSeconds;
Console.WriteLine(secondsSinceEpoch);

11
当然,如果你认为纪元是1970年1月1日00:00:00,就像任何Unix系统一样。但是.NET的纪元是0001年1月1日00:00:00,更为人所知的是DateTime.MinValue - Ross Patterson
50
可以,但是很多应用程序仍然使用1970纪元,例如OAuth。 - froggythefrog
3
应该是毫秒,最后缺少几个零。 - Sinaesthetic
190
从 .Net 4.6 及以上版本开始使用 DateTimeOffset.Now.ToUnixTimeSeconds()。 - Saikat Chakraborty
8
在第一个字符串中,时间戳是通过构造函数创建的,该构造函数返回具有未指定时区的DateTime对象,因此请改用new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)来避免从未指定时区的日期时间进行减法运算。 - Oleg Savelyev
显示剩余8条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接