c# today - Get DateTime.Now mit Millisekunden Genauigkeit




string utc (9)

Das sollte funktionieren:

DateTime.Now.ToString("hh.mm.ss.ffffff");

Wenn Sie die Anzeige nicht benötigen und nur den Zeitunterschied kennen müssen, konvertieren Sie ihn nicht in einen String. DateTime.Now(); es einfach als, DateTime.Now();

Und verwenden Sie TimeSpan , um den Unterschied zwischen den Zeitintervallen zu kennen:

Beispiel

DateTime start;
TimeSpan time;

start = DateTime.Now;

//Do something here

time = DateTime.Now - start;
label1.Text = String.Format("{0}.{1}", time.Seconds, time.Milliseconds.ToString().PadLeft(3, '0'));

Wie kann ich genau einen Zeitstempel der tatsächlichen Zeit mit Millisekunden Genauigkeit konstruieren?

Ich brauche etwas wie 16.4.2013 9: 48: 00: 123. Ist das möglich? Ich habe eine Anwendung, wo ich Werte 10 Mal pro Sekunde abwerte, und ich muss sie in einer Grafik zeigen.


Das DateTime.UtcNow mit DateTime.UtcNow und DateTime.Now besteht darin, dass es je nach Computer und Betriebssystem möglicherweise nur zwischen 10 und 15 Millisekunden genau ist. Auf Windows-Computern kann man jedoch verwenden, indem man die Low-Level-Funktion GetSystemTimePreciseAsFileTime , um Mikrosekundengenauigkeit zu erhalten, siehe unten die Funktion GetTimeStamp() .

    [System.Security.SuppressUnmanagedCodeSecurity, System.Runtime.InteropServices.DllImport("kernel32.dll")]
    static extern void GetSystemTimePreciseAsFileTime(out FileTime pFileTime);

    [System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential)]
    public struct FileTime  {
        public const long FILETIME_TO_DATETIMETICKS = 504911232000000000;   // 146097 = days in 400 year Gregorian calendar cycle. 504911232000000000 = 4 * 146097 * 86400 * 1E7
        public uint TimeLow;    // least significant digits
        public uint TimeHigh;   // most sifnificant digits
        public long TimeStamp_FileTimeTicks { get { return TimeHigh * 4294967296 + TimeLow; } }     // ticks since 1-Jan-1601 (1 tick = 100 nanosecs). 4294967296 = 2^32
        public DateTime dateTime { get { return new DateTime(TimeStamp_FileTimeTicks + FILETIME_TO_DATETIMETICKS); } }
    }

    public static DateTime GetTimeStamp() { 
        FileTime ft; GetSystemTimePreciseAsFileTime(out ft);
        return ft.dateTime;
    }

Pyromancer's Antwort scheint mir ziemlich gut zu sein, aber vielleicht wolltest du:

DateTime.Now.Millisecond

Aber wenn Sie Daten vergleichen, ist TimeSpan der Weg zu gehen.


DateTime.Now.ToString ("ddMMyyyyhhmssffff")


public long millis() {
  return (long.MaxValue + DateTime.Now.ToBinary()) / 10000;
}

Wenn Sie Mikrosekunden möchten, ändern Sie einfach 10000 zu 10 , und wenn Sie den 10. von Mikro wollen, löschen Sie / 10000 .


Wenn Sie immer noch ein Datum anstelle einer Zeichenfolge wie die anderen Antworten möchten, fügen Sie einfach diese Erweiterungsmethode hinzu.

public static DateTime ToMillisecondPrecision(this DateTime d) {
    return new DateTime(d.Year, d.Month, d.Day, d.Hour, d.Minute,
                        d.Second, d.Millisecond, d.Kind);
}

Verwenden Sie die DateTime-Struktur mit Millisekunden und formatieren Sie diese wie folgt:

string timestamp = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fff", 
CultureInfo.InvariantCulture);
timestamp = timestamp.Replace("-", ".");

Ich war auf der Suche nach einer ähnlichen Lösung, DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff") auf dem, was in diesem Thread vorgeschlagen wurde, verwende ich die folgende DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff") , und es funktioniert wie Charme. Beachten Sie, dass .fff die Präzisionszahlen sind, die Sie erfassen möchten.


Überprüfen Sie für eine ASP.Net-Anwendung die Eigenschaften der Site, Registerkarte ASP.NET. Stellen Sie sicher, dass die richtige ASP.NET-Version ausgewählt ist.







c# datetime precision milliseconds