2010-03-19 21 views
5

Estoy trabajando con pbx para llamadas de VoIP. Un aspecto de pbx es que puede elegir recibir paquetes CDR. Esos paquetes tienen 2 marcas de tiempo: "utc" y "local", pero ambos parecen ser siempre los mismos.Convertir la hora local (número de 10 dígitos) en un formato de fecha y hora legible

Aquí hay un ejemplo de una marca de tiempo: "1268927156".

A primera vista, parece que no tiene lógica. Así que traté de convertirlo de varias maneras, pero sin buenos resultados. Ese valor debería proporcionar un tiempo alrededor de las 11:00 a.m. (+ 1GMT) de hoy.

cosas I trataron:

  • Datetime dt = new Datetime (número);
  • Timespan ts = new Timespan (número);
  • DateTime UTC = new DateTime (número + 504911232000000000, DateTimeKind.Utc)

y algunos otros que no recuerdo en este momento.

¿Me estoy perdiendo algo estúpido aquí?

Gracias de antemano

+0

¿estas clases no vienen con un método ToString o Format? – lexu

Respuesta

12

Esto parece Unix tiempo.

1268927156 = Jue 18 Mar 2010 15:45:56 GMT

Y un ejemplo de código: (n. ° de segundos desde la época)

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

problema solucionado, toda la respuesta excelente, gracias – Terry

2

parece ser una marca de tiempo Unix

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

le debería dar la fecha y la hora que fueron después ...

1

supongo que esto es una marca de tiempo UNIX, la lO GIC sería el siguiente:

La marca de tiempo UNIX representa el tiempo medido en número de segundos desde el Epoch Unix (1º de enero de 1970 de 00:00:00 GMT)

Hay una explicación codeproject article la conversión. Básicamente lo que debe hacer es lo siguiente:

// 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

Parece una marca de tiempo unix, que es el no. de segundos desde el 1 de enero de 1970.

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

Si tanto la UTC y marcas de tiempo locales son los mismos, la zona horaria en su PBX o bien se establece en UTC, y sus marcas de tiempo realmente son UTC, o la zona horaria se establece en UTC, pero el tiempo se ajusta a su hora local, y obtiene su hora local para ambas marcas de tiempo. Tendrás que averiguar cuál de ellos para saber si conviene convertir las marcas de tiempo de UTC o no.

Cuestiones relacionadas