2010-03-19 5 views
5

Sto lavorando con pbx per le chiamate voip. Un aspetto di PBX è che puoi scegliere di ricevere pacchetti CDR. Questi pacchetti hanno 2 timestamp: "utc" e "local", ma entrambi sembrano essere sempre gli stessi.Converti ora locale (numero a 10 cifre) in formato datetime leggibile

Ecco un esempio di timestamp: "1268927156".

A prima vista, sembra non esserci alcuna logica in esso. Così ho provato a convertirlo in diversi modi, ma senza risultati positivi. Quel valore dovrebbe fornire un tempo intorno alle 11:00 (+ 1GMT) oggi.

cose che ho provato:

  • Datetime dt = new Datetime (numero);
  • Periodo di tempo ts = nuovo Periodo (numero);
  • DateTime UTC = new DateTime (numero + 504.911.232 miliardi, DateTimeKind.Utc)

e alcuni altri non riesco a ricordare in questo momento.

Mi manca qualcosa di stupido qui?

Grazie in anticipo

+0

Queste classi non hanno un metodo ToString o Format? Problema risolto – lexu

risposta

12

Questo appare come Unix tempo.

1.268.927,156 mila = Gio 18 Mar 2010 15:45:56 GMT

E un esempio di codice: (n. Di secondi dall'epoca)

DateTime startDate = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); 
DateTime time = startDate.AddSeconds(1268927156); 
+0

, ottima risposta, grazie – Terry

2

sembra essere un timestamp Unix

DateTime translated = new DateTime(1970,1,1).AddSeconds(1268927156); 

dovrebbe darvi la data e l'ora eravate dopo ...

1

Credo che questo è un timestamp UNIX, il lO GIC potrebbe essere il seguente:

Il timestamp UNIX rappresenta il tempo misurato in numero di secondi dalla Unix Epoch (1 Gen 1970 00:00:00 GMT)

C'è un codeproject article spiega la conversione. Fondamentalmente quello che devi fare sarebbe il seguente:

// First make a System.DateTime equivalent to the UNIX Epoch. 
System.DateTime dateTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0); 
// Add the number of seconds in UNIX timestamp to be converted. 
dateTime = dateTime.AddSeconds(timestamp); 
1

Che assomiglia a una timestamp Unix, che è il no. di secondi dal 1 ° gennaio 1970.

DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(1268927156); 

Se sia l'UTC e timestamp locali sono gli stessi, il fuso orario sul PBX o è impostato su UTC, e le tue timestamp sono davvero UTC, o il fuso orario è impostato su UTC, ma il tempo è impostato per la vostra ora locale e ottieni l'ora locale per entrambi i timestamp. Dovrai capire quali di questi in modo da sapere se convertire i timestamp da UTC o meno.