为了账号安全,请及时绑定邮箱和手机立即绑定

你如何在C#中转换纪元时间?

/ 猿问

你如何在C#中转换纪元时间?

C#
慕盖茨9453107 2019-10-12 18:07:47

你如何在C#中转换纪元时间?

如何在C#中将Unix 纪元时间转换为实时?(Epoch开始于1970年1月1日)


查看完整描述

3 回答

?
LEATH

我认为你的意思是Unix时间,它被定义为1970年1月1日午夜(UTC)以来的秒数。

public static DateTime FromUnixTime(long unixTime){
    return epoch.AddSeconds(unixTime);}private static readonly DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);


查看完整回答
反对 回复 2019-10-13
?
catspeake

最新版本的.NET(V4.6)的用于Unix时间转换只是增加了内置支持。这包括来自Unix时间和来自Unix或毫秒的时间。

  • Unix时间以秒为单位DateTimeOffset


DateTimeOffset dateTimeOffset = DateTimeOffset.FromUnixTimeSeconds(1000);
  • DateTimeOffset 以秒为单位的Unix时间:


long unixTimeStampInSeconds = dateTimeOffset.ToUnixTimeSeconds();
  • Unix时间(以毫秒为单位)DateTimeOffset


DateTimeOffset dateTimeOffset = DateTimeOffset.FromUnixTimeMilliseconds(1000000);
  • DateTimeOffset 以毫秒为单位的Unix时间:


long unixTimeStampInMilliseconds= dateTimeOffset.ToUnixTimeMilliseconds();

注意:这些方法可以转换为DateTimeOffset。要获得DateTime表示,只需使用该DateTimeOffset.DateTime属性:

DateTime dateTime = dateTimeOffset.UtcDateTime;



查看完整回答
反对 回复 2019-10-13
?
Qyouu

由于归功于LukeH,我将一些扩展方法放在一起以方便使用:

public static DateTime FromUnixTime(this long unixTime){
    var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
    return epoch.AddSeconds(unixTime);}public static long ToUnixTime(this DateTime date){
    var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
    return Convert.ToInt64((date - epoch).TotalSeconds);}

注意下面从CodesInChaos注释,上面FromUnixTime返回DateTimeKindUtc,这是很好的,但上面ToUnixTime更加犯罪嫌疑人不占什么样的DateTime给定date的。要允许dateKind是无论是UtcLocal,使用ToUniversalTime

public static long ToUnixTime(this DateTime date){
    var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
    return Convert.ToInt64((date.ToUniversalTime() - epoch).TotalSeconds);}

ToUniversalTime将a Local(或Unspecified)转换DateTimeUtc

如果你不想在从DateTime移动到epoch时创建epoch DateTime实例,你也可以这样做:

public static long ToUnixTime(this DateTime date){
    return (date.ToUniversalTime().Ticks - 621355968000000000) / 10000000;}



查看完整回答
反对 回复 2019-10-13

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信