个性化阅读
专注于IT技术分析

如何在C#中将Unixtime转换为DateTime类,反之亦然

本文概述

Unix时间基本上是指从1970年1月1日00:00:00(UTC)起经过的秒数。为了将特定的日期和时间转换为Unix时间值, 我们需要从要转换为Unix时间的日期中减去上述日期。尽管你可能不相信, 但是.NET c#中没有使用默认方法将这种单位转换为日期时间的标准方法, 相反, 你将需要编写一些额外的逻辑来在这些值之间进行转换。

在本文中, 我们将向你展示如何在C#中将unixtime转换为DateTime的实例。

A.Unixtime到DateTime

为了将unix时间转换为C#中的DateTime实例, 你只需将给定的时间戳(以毫秒为单位)添加到具有以下日期的DateTime实例中:1/1/1970 00:00:00, 如下所示片段, 方法UnixTimeToDateTime希望将unix时间戳的长表示形式作为第一个参数, 并返回修改后的日期:

/// <summary>
/// Convert Unix time value to a DateTime object.
/// </summary>
/// <param name="unixtime">The Unix time stamp you want to convert to DateTime.</param>
/// <returns>Returns a DateTime object that represents value of the Unix time.</returns>
public DateTime UnixTimeToDateTime(long unixtime)
{
    System.DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc);
    dtDateTime = dtDateTime.AddMilliseconds(unixtime).ToLocalTime();
    return dtDateTime;
}

以下示例显示如何使用方法和输出:

// Outputs: 21-Mar-19 10:32:53 PM
Console.WriteLine(UnixTimeToDateTime(1553225573655));

B. DateTime到Unixtime

如果你正在创建某种需要unix时间戳格式的API, 则可以使用以下方法轻松地将DateTime实例转换为上述格式:

/// <summary>
/// Convert a DateTime to a unix timestamp
/// </summary>
/// <param name="MyDateTime">The DateTime object to convert into a Unix Time</param>
/// <returns></returns>
public long DateTimeToUnix(DateTime MyDateTime)
{
    TimeSpan timeSpan = MyDateTime - new DateTime(1970, 1, 1, 0, 0, 0);

    return (long)timeSpan.TotalSeconds;
}

以下示例显示如何使用方法和输出:

// Prints "1553299673"
Console.WriteLine(DateTimeToUnix(DateTime.UtcNow));

编码愉快!

赞(0)
未经允许不得转载:srcmini » 如何在C#中将Unixtime转换为DateTime类,反之亦然

评论 抢沙发

评论前必须登录!