2011-02-11 74 views
16

Ví dụ 1297380023295 nên 2010/02/11 09:00 tôi sử dụng mã này ngay bây giờLàm thế nào để chuyển đổi dài kiểu datetime để DateTime với múi giờ đúng

 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; 

Kết quả của chức năng này là 1:00, Đó là GMT. Tôi có thể làm gì với ứng dụng này?

Trả lời

36

Bạn đang tìm kiếm phương pháp ToLocalTime():

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

Cảm ơn bạn đã trả lời. – Shisoft

+1

Tôi tìm thấy liên kết sau hữu ích hơn http://stackoverflow.com/a/6156193/3728916 – ImranNaqvi

+1

@ImranNaqvi: Phương thức đó có các dấu tick .Net, không phải dấu thời gian của Unix. – SLaks

4

Bạn có thể chỉ định DateTimeKind khi bạn tạo một đối tượng DateTime mới, vì vậy bạn có thể xác định đó là UTC và sau đó sử dụng .ToLocalTime để chuyển nó sang địa phương thời gian:

 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()); 
+0

Làm cách nào tôi có thể chuyển đổi như 'DateTime.Parse (" 22:34 ")' thành 'long' –

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 kịch bản mảnh, chỉ FYI

$minDate = New-Object "System.DateTime" 
$minDate = $minDate.AddYears(1969) 
$minDate.AddMilliseconds(1446616420947) 
Các vấn đề liên quan