C# 用C语言解析unix时间#

C# 用C语言解析unix时间#,c#,unix-timestamp,C#,Unix Timestamp,有没有一种方法可以在C#中快速/轻松地解析Unix时间?我对这门语言是全新的,所以如果这是一个非常明显的问题,我道歉。IE我有一个字符串,格式为[从纪元算起的秒数][毫秒]。在C#中是否有与Java的SimpleDataFormat等价的格式?万岁!另见 附件:这是来自: 最简单的方法可能是使用以下内容: private static readonly DateTime Epoch = new DateTime(1970, 1, 1, 0, 0, 0,

有没有一种方法可以在C#中快速/轻松地解析Unix时间?我对这门语言是全新的,所以如果这是一个非常明显的问题,我道歉。IE我有一个字符串,格式为[从纪元算起的秒数][毫秒]。在C#中是否有与Java的SimpleDataFormat等价的格式?

万岁!另见

附件:

这是来自:


最简单的方法可能是使用以下内容:

private static readonly DateTime Epoch = new DateTime(1970, 1, 1, 0, 0, 0, 
                                                      DateTimeKind.Utc);

...
public static DateTime UnixTimeToDateTime(string text)
{
    double seconds = double.Parse(text, CultureInfo.InvariantCulture);
    return Epoch.AddSeconds(seconds);
}
有三件事需要注意:

  • 如果字符串的格式肯定是“x.y”而不是“x,y”,则应使用如上所示的不变区域性,以确保将“.”解析为小数点
  • 您应该在
    DateTime
    构造函数中指定UTC,以确保它不认为这是本地时间
  • 如果使用.NET 3.5或更高,您可能需要考虑使用而不是<代码>日期时间< /> >

这是C#人经常做的事情,但却没有相应的图书馆


我创建这个迷你图书馆是为了让我的生活(我也希望你的生活)更轻松。

这是一个方便的扩展方法

  public static DateTime UnixTime(this string timestamp)
    {
        var dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
        return dateTime.AddSeconds(int.Parse(timestamp));
    }

我意识到这是一个相当老的问题,但我想我应该发布我的解决方案,使用即时类


我完全明白,也许对一些人来说,在Nodatime拉车可能会很沉重。对于依赖性膨胀不是主要问题的项目,我宁愿依赖维护的库解决方案,而不必维护自己的解决方案。

自.NET 4.6以来,您可以使用
DateTimeOffset.fromUnixtimesons()
DateTimeOffset.fromUnixtimemescles()

long unixTime=160000000;
DateTimeOffset dto=DateTimeOffset.FromUnixTimeSeconds(unixTime);
DateTime dt=dto.DateTime;

我相信,这将以一种未指定的日期时间结束。它还将使用本地文化来确定小数点格式。您的文章的编辑版本可以。但是,第一个版本实际上没有什么帮助,因为链接的MSDN页面没有UNIX时间戳的示例,DateTime也没有通过该页面可以找到的内置函数。现在您已经编辑了答案,它与其他答案一样。
var date = (new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc))
               .AddSeconds(
               double.Parse(yourString, CultureInfo.InvariantCulture));
private string conv_Timestamp2Date (int Timestamp)
{
            //  calculate from Unix epoch
            System.DateTime dateTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0);
            // add seconds to timestamp
            dateTime = dateTime.AddSeconds(Timestamp);
            string Date = dateTime.ToShortDateString() +", "+ dateTime.ToShortTimeString();

            return Date;
}
private static readonly DateTime Epoch = new DateTime(1970, 1, 1, 0, 0, 0, 
                                                      DateTimeKind.Utc);

...
public static DateTime UnixTimeToDateTime(string text)
{
    double seconds = double.Parse(text, CultureInfo.InvariantCulture);
    return Epoch.AddSeconds(seconds);
}
  public static DateTime UnixTime(this string timestamp)
    {
        var dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
        return dateTime.AddSeconds(int.Parse(timestamp));
    }
Instant.FromSecondsSinceUnixEpoch(longSecondsSinceEpoch).ToDateTimeUtc();