La rappresentazione di DateTime in millisecondi?

Ho un timestamp SQL-server che ho bisogno di convertire in una rappresentazione del tempo in millisecondi dal 1970. Posso farlo con SQL semplice? In caso contrario, l’ho estratto in una variabile DateTime in C #. È ansible ottenere una rappresentazione millisec di questo?

Grazie,
Teja.

Probabilmente stai provando a convertire in un timestamp simile a UNIX, che sono in UTC:

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

Questo evita anche i problemi dell’estate, poiché UTC non ne ha.

In C #, puoi scrivere

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

A partire da .NET 4.6, è ansible utilizzare un object DateTimeOffset per ottenere i millisecondi unix. Ha un costruttore che prende un object DateTime , quindi puoi semplicemente passare il tuo object come mostrato di seguito.

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

Come indicato in altre risposte, assicurati che yourDateTime abbia specificato il Kind corretto, oppure usa .ToUniversalTime() per convertirlo prima in ora UTC.

Qui puoi saperne di più su DateTimeOffset .

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

Questo non ti dà la massima precisione, ma DATEDIFF(MS... provoca un overflow. Se i secondi sono abbastanza buoni, questo dovrebbe farlo.

Questa altra soluzione per datetime nascosta 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 risposta di Andoma, questo è quello che sto facendo

Puoi creare una Struct o una Classe come questa

 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(); } } 

E puoi usare questo nel tuo codice come segue

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

Spero che questo ti sia d’aiuto

dice angular su un paratista:

Data da formattare come object Date, millisecondi (stringa o numero) o vari formati di stringa datetime ISO 8601 (ad es. Yyyy-MM-ddTHH: mm: ss.sssZ e le sue versioni più corte come yyyy-MM-ddTHH: mmZ, aaaa-MM -dd o yyyyMMddTHHmmssZ). Se non viene specificato fuso orario nell’input della stringa, l’ora viene considerata nel fuso orario locale.

La risposta di Andomar è convertita da datetime a millisecondi totali.

E dovresti guardare i seguenti link.

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

Dato un object DateTime, come posso ottenere una data ISO 8601 in formato stringa?