INT Zahl eines Datums

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    INT Zahl eines Datums

    Hallo,

    ich habe mir viele Beiträge aus der Suche angeschaut, aber nicht so recht das Passende gefunden. Gibt es eine Funktion, die mir die Ganzzahl eines Datums anzeigt, so wie es Excel auch macht. Dabei wird ja vom 1.1.1900 als Tag N° 1 ausgegangen und heute ist eben zB 42124

    Wäre schön, wenn ihr da paar Tipps hättet. Habe schon etwas mit DateDiff probiert, ging aber alles nicht.

    Danke :thumbup: Alex.
    ==> seid .net zueinander :D <3 <==

    Axxxxxl schrieb:

    ging aber alles nicht.
    So was:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim dt As DateTime = DateTime.Now
    3. Dim diff As TimeSpan = DateTime.Now - dt
    4. MessageBox.Show("Ticks Datum: " & dt.Ticks.ToString & Environment.NewLine & "Ticks Differenz: " & diff.Ticks.ToString)
    5. End Sub
    Excel-kompatibel ist das allerdings nicht.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    TimeSpan.Days sollte helfen.

    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Guten Tag Axxxxxl

    Wenn du mit Datetime arbeitest, dann gibt es die ".Ticks"
    Die gibt dir eine Long oder integer raus, vom Datum mit Uhrzeit unden ganzen.

    VB.NET-Quellcode

    1. Dim dt as Datetime = New DateTime(350000000000000000)
    2. 'Ich glaube long ist der Typ
    3. Dim lngTime As Long = dt.Ticks


    'Schau dir auch das an, ungetestet
    msdn.microsoft.com/de-de/libra…me.compare(v=vs.110).aspx

    Freundliche Grüsse

    exc-jdbi

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „exc-jdbi“ ()

    14.4.1 Zeitspanne »Tick« Die Zeitmessung erfolgt in Einheiten von 100 Nanosekunden, die als Tick bezeichnet werden.

    Diese Aussage muss man sich auf der Zunge zergehen lassen: Die .NET-Zeitmessung beginnt am 1.1.0001 um 0:00 Uhr, und es können Intervalle von 0.0000001 Sekunden (in Worten: ein Zehnmillionstel) unterschieden werden. Die Anzahl der Ticks seit Beginn dieser Zeitrechnung kann in einem long gespeichert werden, der groß genug ist, um damit alle Intervalle bis zum Ende des Jahres 9999 abdecken zu können.

    Wenn Sie das aktuelle Datum und die aktuelle Zeit in Ticks ausgedrückt sehen wollen, dann geben Sie den folgenden Code ein:

    C#-Quellcode

    1. Console.WriteLine(DateTime.Now.Ticks);

    Zuerst rufen Sie die statische Methode Now auf, die das aktuelle Systemdatum einschließlich der Zeit als DateTime zurückliefert. Darauf wird die Eigenschaft Ticks angewendet, die Ihnen eine kaum noch fehlerfrei abschreibbare Zahl liefert.

    Umgekehrt können Sie natürlich auch aus einem long, der als Tick interpretiert werden soll, das Datum und die Zeit ermitteln. Dazu wird die Klasse DateTime instanziiert und dabei ein Konstruktor aufgerufen, der einen long erwartet, der als die Anzahl der Ticks seit Beginn der .NET-Zeitrechnung interpretiert wird.

    C#-Quellcode

    1. DateTime actualDate = new DateTime(631452984963219664);
    2. Console.WriteLine(actualDate.ToString());

    Die Ausgabe lautet:

    30.12.2001 08:41:36



    Quelle: openbook.rheinwerk-verlag.de/visual_csharp_2010/
    Vielen Dank für alle Antworten! Leider komme ich mit den Berechnungen von euch nicht zum Ergebnis (30.4.2015 = 42124) aushgehend vom Startdatum 1.1.1900 = Tag 1
    Startdatum ist also sozusagen fest. Nun müsste das mit DateDiff doch irgendwie klappen?
    ==> seid .net zueinander :D <3 <==

    Axxxxxl schrieb:

    Nun müsste das mit DateDiff doch irgendwie klappen?
    So was:

    VB.NET-Quellcode

    1. Dim dNull = New DateTime(1900, 1, 1)
    2. Dim diff As TimeSpan = DateTime.Now - dNull
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    vlt. erklärst du mal, wasses werden soll.
    Generell vorgesehen ist sowas nicht. Zeitpunkte und Zeitspannen sind in .Net eigene Datentypen, und normal gibts keinen Grund die in Zahlen zu verwandeln.
    Ist natürlich möglich, aber ebenso natürlich kann man sich gradezu beliebig viele Arten ausdenken, um solch Umwandlungen auszuführen.

    Daher wie gesagt: vlt. erklärst du mal, wasses werden soll.