繁体   English   中英

如何使用正确的时区将长型日期时间转换为日期时间

[英]How to convert Long type datetime to DateTime with correct time zone

例如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 点,即格林威治标准时间。 我可以用它做什么?

您正在寻找ToLocalTime()方法:

long unixDate = 1297380023295;
DateTime start = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
DateTime date= start.AddMilliseconds(unixDate).ToLocalTime();
long a= 634792557112051692;
//a= ticks time
  DateTime dt = new DateTime(a);
   Response.Write(dt.Hour.ToString());


//dt.hour convert time ticks to time hour

您可以在创建新的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());

Powershell脚本片,仅供参考

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

你可以使用DateTimeOffset static方法。

DateTimeOffset.FromUnixTimeSeconds()

DateTimeOffset.FromUnixTimeMilliseconds()

取决于你有你的刻度的格式。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM