2011-02-11 40 views
16

例如1297380023295应该是2010年2月11日上午9点 我使用此代码现在如何长型时间值转换为日期时间与正确的时区

 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点,现在是GMT。 我能用它做什么?

回答

36

您正在寻找的ToLocalTime()方法:

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

谢谢你的回答。 – Shisoft 2011-02-11 02:35:02

+1

我发现以下链接更有用 http://stackoverflow.com/a/6156193/3728916 – ImranNaqvi 2015-08-27 10:35:48

4

当你创建一个新的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()); 
3
long a= 634792557112051692; 
//a= ticks time 
    DateTime dt = new DateTime(a); 
    Response.Write(dt.Hour.ToString()); 


//dt.hour convert time ticks to time hour 
0

PowerShell脚本片,只是FYI

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