Datum & Uhrzeit runden

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

    Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

      Datum & Uhrzeit runden

      Hi,
      beim durchstöbern des Internets nach Methoden zum runden von Uhrzeiten und Datümern bin ich nur auf einige recht hilflose Versuche zu runden gestoßen, da wurde das mit Abfragen geregelt.

      Deshalb möchte ich hier meine Methode vorstellen:

      VB.NET-Quellcode

      1. Public Enum RoundType As Long
      2. Days = TimeSpan.TicksPerDay
      3. Hours = TimeSpan.TicksPerHour
      4. Minutes = TimeSpan.TicksPerMinute
      5. Seconds = TimeSpan.TicksPerSecond
      6. End Enum
      7. Private Function Round(dt As DateTime, value%, toround As RoundType) As DateTime
      8. Dim roundit = value * toround
      9. Dim ticks = CLng(Math.Floor((dt.Ticks / roundit + 0.5)) * roundit)
      10. Return New DateTime(ticks)
      11. End Function


      Wobei ich nicht so ganz kapiere, warum die VB.Net Sprachentwickler diesen flotten 3 Zeiler nicht in der math.Round Funktion untergebracht haben.

      Für Kommentare und weitere Anregungen wäre ich dankbar.

      Axel
      Bitje voor Bitje Kwaliteit

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Axel“ ()

      Hi

      vielen Dank für den Hinweis auf die fehlerhafte Enum. Das war ein Flüchtigkeits- bzw. Copy & Paste- Fehler.

      Mit der Round Funktion habe ich so meine Probleme, die rundet technisch aber nicht kaufmännisch, deshalb hab ich das "zu Fuss" gemacht, da weiß ich dann, was passiert.
      Mit der Option "MidpointRounding.AwayFromZero " sollte sich die Round Funktion genau wie mein Code verhalten, aber ohne zusätzliche Angabe rundet die Funktion auf die nächste gerade Zahl, so die MSDN Dokumentation. Das ist zwar in der Finanzmathematik von Belang, aber im Zusammenhang mit meiner Funktion falsch.
      Bitje voor Bitje Kwaliteit

      Axel schrieb:

      die rundet technisch aber nicht kaufmännisch
      Math.Round() hat einen zweiten Parameter, der das vorgibt:
      learn.microsoft.com/de-de/dotn…und?view=netframework-4.8
      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!