如何将 Long 类型的 datetime 转换为具有正确时区的 DateTime

Posted

技术标签:

【中文标题】如何将 Long 类型的 datetime 转换为具有正确时区的 DateTime【英文标题】:How to convert Long type datetime to DateTime with correct time zone 【发布时间】:2011-06-25 06:40:41 【问题描述】:

例如 1297380023295 应该是 2010/2/11 9 AM 我现在使用这个代码

        long dateNumber = num;
        long beginTicks = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks;
        DateTime dateValue = new DateTime(beginTicks + dateNumber * 10000);

        return dateValue;

这个函数的结果是凌晨 1 点,它是格林威治标准时间。 我能用它做什么?

【问题讨论】:

【参考方案1】:

你可以使用DateTimeOffset中的static方法。

DateTimeOffset.FromUnixTimeSeconds()

DateTimeOffset.FromUnixTimeMilliseconds()

取决于您的刻度线采用哪种格式。

如果你想要DateTime,你可以使用例如

var ticks = 1635091250;
var dateTime = DateTimeOffset.FromUnixTimeSeconds(ticks).DateTime;

【讨论】:

【参考方案2】:

Powershell 脚本片段,仅供参考

$minDate = New-Object "System.DateTime"
$minDate = $minDate.AddYears(1969)
$minDate.AddMilliseconds(1446616420947)

【讨论】:

【参考方案3】:

您正在寻找ToLocalTime() 方法:

long unixDate = 1297380023295;
DateTime start = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
DateTime date= start.AddMilliseconds(unixDate).ToLocalTime();

【讨论】:

我发现下面的链接更有用***.com/a/6156193/3728916 @ImranNaqvi:该方法需要 .Net 滴答声,而不是 Unix 时间戳 @SLaks +1 进行更正谢谢你是对的,你能指导我如何使用你的代码只获取日期部分 @ImranNaqvi:您正在寻找 .Date 属性。 @SLaks - 是的,我发现它使用 DateTime myDate = DateTime.FromOADate(Convert.ToDouble(rd[0])); string mydate2 = myDate.ToString("dd/MM/yyyy");【参考方案4】:
long a= 634792557112051692;
//a= ticks time
  DateTime dt = new DateTime(a);
   Response.Write(dt.Hour.ToString());


//dt.hour convert time ticks to time hour

【讨论】:

【参考方案5】:

您可以在创建新的 DateTime 对象时指定 DateTimeKind,因此您可以将其指定为 UTC,然后使用 .ToLocalTime 将其转换为本地时间:

        long dateNumber = 1297380023295;
        long beginTicks = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks;

        DateTime dt = new DateTime(beginTicks + dateNumber * 10000, DateTimeKind.Utc);
        MessageBox.Show(dt.ToLocalTime().ToString());

【讨论】:

如何将DateTime.Parse("22:34") 转换为long

以上是关于如何将 Long 类型的 datetime 转换为具有正确时区的 DateTime的主要内容,如果未能解决你的问题,请参考以下文章

C# 无法将类型 system.DateTime转换成 string[]

如何将string转换为datetime

如何将string 类型字段转换为datetime类型字段

如何将有符号的long型转换成无符号的long型

如何将long类型转化为string

怎么把string转换datetime类型