AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Datumsangabe ab dem Jahr 0 - gibt es eine Konvention?
Thema durchsuchen
Ansicht
Themen-Optionen

Datumsangabe ab dem Jahr 0 - gibt es eine Konvention?

Ein Thema von messie · begonnen am 3. Jun 2018 · letzter Beitrag vom 6. Jun 2018
Antwort Antwort
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#1

AW: Datumsangabe ab dem Jahr 0 - gibt es eine Konvention?

  Alt 5. Jun 2018, 10:00
Moin,

nein, die Frage lautete: wie wird mit dem 29.4. des Jahres 1415 umgegangen? Gibt es Algorithmen, die die Ungenauigkeit der 365.25 Tage ausgleichen?

Code:
A serial date number represents the whole and fractional number of days from a fixed, preset date (January 0, 0000) in the proleptic ISO calendar
Mal sehen, ob ich dazu etwas finde.

Grüße, Messie
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
733 Beiträge
 
Delphi 12 Athens
 
#2

AW: Datumsangabe ab dem Jahr 0 - gibt es eine Konvention?

  Alt 5. Jun 2018, 11:36
Moin,

nein, die Frage lautete: wie wird mit dem 29.4. des Jahres 1415 umgegangen? Gibt es Algorithmen, die die Ungenauigkeit der 365.25 Tage ausgleichen?
Wie wäre es mit folgendem Ansatz:

Der 01.01.0001 ist als Delphi-TDateTime -693593

Da du am 01.01.0000 anfängst, sind es noch 365 Tage zurück, also -693958 (oder -693959, falls es wirklich der 0. Januar sein soll)

Der 29.04.1415 wäre demnach StrToDate('29.04.1415') + 693958 = -177023 + 693958 = 516935
  Mit Zitat antworten Zitat
Alallart

Registriert seit: 8. Dez 2015
165 Beiträge
 
#3

AW: Datumsangabe ab dem Jahr 0 - gibt es eine Konvention?

  Alt 5. Jun 2018, 12:16
Moin,

nein, die Frage lautete: wie wird mit dem 29.4. des Jahres 1415 umgegangen? Gibt es Algorithmen, die die Ungenauigkeit der 365.25 Tage ausgleichen?
Es gibt keine Ungenauigkeit, für alles gibt es Regeln. Die bekannteste ist die Berechnung des Schaltjahres alle vier Jahre. Teilt man das Jahr durch 4, und es gibt keine Nachkommastellen, ist es ein Schaltjahr.

Beispiel:
  if Frac(2020/4) = 0 then ShowMessage('Schaltjahr');
oder
  if (2020 mod 4) = 0 then ShowMessage('Schaltjahr');

Die nächste Regel ist, dass wenn die obere Regel ein Schaltjahr berechnet, man aber das Jahr durch 100 teilen kann (ohne Nachkommastellen), man das Schaltjahr auslässt.

Delphi-Quellcode:
  if (2000 mod 4) = 0 then ShowMessage('Schaltjahr');
  if (2000 mod 100) = 0 then ShowMessage('doch kein Schaltjahr');
Davon gibt es wiederum eine Ausnahme. Wenn es nach der 4 Jahres-Regel ein Schaltjahr ist, und nach der 100 Jahre-Regel kein Schaltjahr ist, man es aber durch 400 teilen kann (wieder ohne Nachkommastellen), dann ist es doch ein Schaltjahr.

Delphi-Quellcode:
var
  a: Integer;
begin
  a := 2300;

  if (a mod 400) = 0 then
    ShowMessage('Es ist ein Schlatjahr')
  else if (a mod 100) = 0 then
    ShowMessage('Es ist KEIN Schlatjahr')
  else if (a mod 4) = 0 then
    ShowMessage('Es ist ein Schlatjahr')
  else
    ShowMessage('Es ist KEIN Schlatjahr');
end;
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
733 Beiträge
 
Delphi 12 Athens
 
#4

AW: Datumsangabe ab dem Jahr 0 - gibt es eine Konvention?

  Alt 5. Jun 2018, 13:36
Moin,

nein, die Frage lautete: wie wird mit dem 29.4. des Jahres 1415 umgegangen? Gibt es Algorithmen, die die Ungenauigkeit der 365.25 Tage ausgleichen?
Die gibt es. Als Ergänzung zu meinem vorigen Beitrag:

Schau dir mal den Quellcode der Function TryEncodeDate aus der Unit SysUtils an.
Da wird sogar zuerst dein Timestamp basierend auf dem 31.12.0000 errechnet und davon die Konstante DateDelta abgezogen.

DateDelta ist 693594, also genau der Wert, den ich in meinem vorigen Beitrag wieder hinzuaddiert habe. Wenn du also diese Function nimmst, kannst du durch Anpassen von DateDelta die Datumsbasis da hinlegen, wo du willst.
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Datumsangabe ab dem Jahr 0 - gibt es eine Konvention?

  Alt 6. Jun 2018, 14:57
Moin,

wenn sich Matlab auch an die Berechnung der Schaltjahre hält, muss ich eigentlich nur die 693958 vom Eingangswert abziehen.
Danke für Eure Hilfe. Ist fast ein bisschen wie nach Hause kommen .

Grüße, Messie
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz