2011-02-11 11 views
16

Per esempio 1297380023295 dovrebbe essere 2010/02/11 09:00 Io uso questo codice in questo momentoCome convertire tipo lungo datetime per DateTime con il fuso orario corretto

 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; 

Il risultato di questa funzione è 01:00, È GMT. Cosa posso fare con questo?

risposta

36

Stai cercando il metodo di ToLocalTime():

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

Grazie per la risposta. – Shisoft

+1

Ho trovato il seguente link più utile http://stackoverflow.com/a/6156193/3728916 – ImranNaqvi

+1

@ImranNaqvi: Quel metodo accetta tick .Net, non timestamp Unix. – SLaks

4

È possibile specificare il DateTimeKind quando si crea un nuovo oggetto DateTime, così si potrebbe specificare che come UTC e quindi utilizzare .ToLocalTime per convertirlo in locale tempo:

 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

Come posso convertire come '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 pezzo di script, appena cronaca

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