2011-02-11 17 views
16

Por ejemplo 1297380023295 debería haber 02/11/2010 09 a.m. utilizo este código en este momentoCómo convertir larga tipo de fecha y hora a DateTime con la zona horaria correcta

 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; 

El resultado de esta función es de 1 de la mañana, Es GMT. ¿Qué puedo hacer con eso?

Respuesta

36

Usted está buscando el método ToLocalTime():

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

Gracias por la respuesta. – Shisoft

+1

Encontré el siguiente enlace más útil http://stackoverflow.com/a/6156193/3728916 – ImranNaqvi

+1

@ImranNaqvi: Ese método toma tics .Net, no marcas de tiempo Unix. – SLaks

4

Se puede especificar el DateTimeKind cuando se crea un nuevo objeto DateTime, por lo que podría indicar que a medida que la hora UTC y luego usar .ToLocalTime para convertirlo en locales tiempo:

 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

¿Cómo puedo convertir como 'DateTime.Parse (" 22:34 ")' a '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 pieza de escritura, lo digo

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