Wie kann ich Ticks in ein Datumsformat konvertieren?

70

Ich konvertiere einen Ticks-Wert in ein Datum wie das folgende:

Convert(datetime, (MachineGroups.TimeAdded - 599266080000000000)/864000000000);

Damit bekomme ich:

9/27/2009 10:50:27 PM

Aber ich möchte nur das Datum in diesem Format:

October 1, 2009

Mein Beispiel-Tick-Wert ist

633896886277130000

Was ist der beste Weg, dies zu tun?

user175084
quelle
Scheint mir eine ganz echte Frage zu sein, wie man die Ausgabe von DateTime.ToString () formatiert.
Eric J.
Wenn er meine Antwort auf seine Frage von gestern gelesen hat, habe ich bereits den Code dafür bereitgestellt ...
womp
1
Ich habe die Frage ziemlich stark bearbeitet, damit sie legitimer klingt. Das Original war verbesserungsbedürftig.
JosephStyons
Er hat einen Codeversuch unternommen, also zeigte er zumindest Mühe. Ich wusste nicht, dass dies gestern gefragt wurde. Trotzdem komme ich an einen Punkt, an dem ich möglicherweise keine Fragen von "unbekannt (google)" mehr lese. Sie investieren in der Regel nicht viel Zeit in die Formulierung der Frage.
Eric J.

Antworten:

188

Ein DateTime-Objekt kann mit einem bestimmten Wert von Ticks erstellt werden. Nachdem Sie den Tick-Wert ermittelt haben, können Sie Folgendes tun:

DateTime myDate = new DateTime(numberOfTicks);
String test = myDate.ToString("MMMM dd, yyyy");
Jason Berkan
quelle
57

Dies ist viel einfacher:

DateTime dt = new DateTime(633896886277130000);

Welches gibt

dt.ToString() ==> "9/27/2009 10:50:27 PM"

Sie können dies beliebig formatieren, indem Sie verwenden dt.ToString(MyFormat). In dieser Referenz finden Sie Formatzeichenfolgen. "MMMM dd, yyyy"funktioniert für das, was Sie in der Frage angegeben haben.

Ich bin mir nicht sicher, woher du den 1. Oktober bekommst.

Eric J.
quelle
1. Oktober ist nur ein Formatbeispiel. Ich brauche die convert-Anweisung, damit ich sie in der SQL-select-Anweisung verwenden kann
user175084
7
    private void button1_Click(object sender, EventArgs e)
    {
        long myTicks = 633896886277130000;
        DateTime dtime = new DateTime(myTicks);
        MessageBox.Show(dtime.ToString("MMMM d, yyyy"));
    }

Gibt

September 27, 2009

Benötigen Sie das?

Ich sehe jedoch nicht, wie einfach es ist, mit diesem Format in SQL-Abfragen zu arbeiten.

JosephStyons
quelle
1

Die bisherigen Antworten haben mir geholfen, meine zu finden. Ich bin vorsichtig mit UTC gegen Ortszeit; Ticks sollten immer UTC IMO sein.

public class Time
{
    public static void Timestamps()
    {
        OutputTimestamp();
        Thread.Sleep(1000);
        OutputTimestamp();
    }

    private static void OutputTimestamp()
    {
        var timestamp = DateTime.UtcNow.Ticks;
        var localTicks = DateTime.Now.Ticks;
        var localTime = new DateTime(timestamp, DateTimeKind.Utc).ToLocalTime();
        Console.Out.WriteLine("Timestamp = {0}.  Local ticks = {1}.  Local time = {2}.", timestamp, localTicks, localTime);
    }
}

Ausgabe:

Timestamp = 636988286338754530.  Local ticks = 636988034338754530.  Local time = 2019-07-15 4:03:53 PM.
Timestamp = 636988286348878736.  Local ticks = 636988034348878736.  Local time = 2019-07-15 4:03:54 PM.
Peter L.
quelle