¿La representación de DateTime en milisegundos?

Tengo una marca de tiempo del servidor SQL que necesito convertir en una representación de tiempo en milisegundos desde 1970. ¿Puedo hacer esto con SQL simple? Si no, lo he extraído en una variable DateTime en C #. ¿Es posible obtener una representación miliseca de esto?

Gracias,
Teja

Probablemente estés intentando convertir a una marca de tiempo similar a UNIX, que está en UTC:

 yourDateTime.ToUniversalTime().Subtract( new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc) ).TotalMilliseconds 

Esto también evita los problemas de verano, ya que UTC no los tiene.

En C #, puedes escribir

 (long)(date - new DateTime(1970, 1, 1)).TotalMilliseconds 

A partir de .NET 4.6, puede usar un objeto DateTimeOffset para obtener los milisegundos de Unix. Tiene un constructor que toma un objeto DateTime , por lo que puede pasar su objeto como se muestra a continuación.

 DateTime yourDateTime; long yourDateTimeMilliseconds = new DateTimeOffset(yourDateTime).ToUnixTimeMilliseconds(); 

Como se indicó en otras respuestas, asegúrese de que su yourDateTime tenga el Kind correcto especificado, o use .ToUniversalTime() para convertirlo a la hora UTC primero.

Aquí puedes aprender más sobre DateTimeOffset .

 SELECT CAST(DATEDIFF(S, '1970-01-01', SYSDATETIME()) AS BIGINT) * 1000 

Esto no le da una precisión total, pero DATEDIFF(MS... causa desbordamiento. Si los segundos son lo suficientemente buenos, debería hacerlo.

Esta otra solución para datetime encubierta a unixtimestampmillis C #.

 private static readonly DateTime UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); public static long GetCurrentUnixTimestampMillis() { DateTime localDateTime, univDateTime; localDateTime = DateTime.Now; univDateTime = localDateTime.ToUniversalTime(); return (long)(univDateTime - UnixEpoch).TotalMilliseconds; } 

Usando la respuesta de Andoma, esto es lo que estoy haciendo.

Puedes crear un Struct o una Class como esta

 struct Date { public static double GetTime(DateTime dateTime) { return dateTime.ToUniversalTime().Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds; } public static DateTime DateTimeParse(double milliseconds) { return new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(milliseconds).ToLocalTime(); } } 

Y puedes usar esto en tu código como sigue

 DateTime dateTime = DateTime.Now; double total = Date.GetTime(dateTime); dateTime = Date.DateTimeParse(total); 

Espero que esto te ayude

angular dice acerca de la date parater:

Fecha para formatear como objeto Fecha, milisegundos (cadena o número) o varios formatos de cadena datetime ISO 8601 (por ejemplo, aaaa-MM-ddTHH: mm: ss.sssZ y sus versiones más cortas como aaaa-MM-ddTHH: mmZ, aaaa-MM -dd o aaaaMMddTHHmmssZ). Si no se especifica una zona horaria en la entrada de la cadena, se considera que la hora está en la zona horaria local.

La respuesta de Andomar se convierte en fecha y hora a milisegundos totales.

Y deberías mirar los siguientes enlaces.

https://docs.angularjs.org/api/ng/filter/date

Dado un objeto DateTime, ¿cómo obtengo una fecha ISO 8601 en formato de cadena?

    Intereting Posts