2012-03-15 77 views
9

Estoy trabajando con Visual Studio 2010, MVC 3 y C#. Estoy creando algunos gráficos altos y necesito que el eje x sea una fecha. Estoy sacando las fechas de una base de datos y añadiéndolas a una matriz que luego se pasará a las notas altas. Creo que Highcharts requiere que las fechas estén en formato de milisegundos. Ho hago para convertir un DateTime de '12/20/2011 5:10:13 PM", por ejemplo a milisegundos?Convertir fecha en milisegundos

+0

Qué quiere decir que necesita el valor 'DateTime' en formato época Unix, tal como se describe [aquí] (http://stackoverflow.com/questions/8700823/datetime- format-from-unix-epoch)? – Oded

+2

milisegundos de qué? –

+4

¿Qué quiere decir con formato de milisegundos? ¿La cantidad de milisegundos transcurridos desde la época de Unix? Desde 01/01/0001? –

Respuesta

21

Una vez que averigüe de lo que quiere calcular milisegundos, puede tomar un objeto DateTime de otro para obtener un objeto TimeSpan. Desde TimeSpan puedes obtener Totalmilisegundos.

En otras palabras, si comienzo y el final son objetos DateTime, usted puede hacer esto:

double milliseconds = (end - start).TotalMilliseconds; 
+0

No estoy seguro aún de qué quiero calcular los milisegundos. Solo sé que no puedo pasar un objeto DateTime a HighCharts. Para los datos, solo acepta valores numéricos. Probé tu solución y parece que funciona. Recibí un par de respuestas aceptables. Sin embargo, creo que el suyo es el más limpio y fácil de usar. Gracias por la ayuda. – Linger

1
DateTime[] dates = ; 

var minDate = dates.Min(); 

var msDates = dates.Select(date => (date - minDate).TotalMilliseconds).ToArray(); 
+0

Esta fue mi suposición también de que se requiere una fecha de referencia mínima. – ChaosPandion

11

Usted puede utilizar la propiedad DateTime.Ticks y convertir el valor en milisegundos.

El valor de esta propiedad representa el número de intervalos de 100 nanosegundos que han transcurrido desde las 12:00:00 de la medianoche del 1 de enero de 0001, que representa DateTime.MinValue. No incluye el número de tics atribuibles a segundos bisiestos

Una sola marca representa cien nanosegundos o en e diez millones de segundo. Hay 10,000 tics en un milisegundo.

2

Los .Ticks en C# de fecha y hora le da el valor de cualquier momento en las garrapatas. Usted puede convertir a partir de entonces a milisegundos como se muestra a continuación

long dateticks = Datetime.Now.Ticks 
long datemilliseconds = dateticks/10,000 
Cuestiones relacionadas