Einstellungen
Hier werden die grundlegenden Einstellungen vor dem eigentlichen Code beschrieben. Hierbei sind auch die Positionsparameter für die unterschiedlichen Ein- und Ausgabeformate.
Klasse/Initalisierung
Die Klasse wird gebildet und hier initalisiert. Hierunter fällt auch das Ausgabeformat. Hier sind verfügbar:
Date (Property)
Dieses Datum geht vom Klartextformat aus. Dieses kann mit und ohne Trennzeichen eingegeben werden. Das Landformat wird mit der Erstellung des Objekts oder den Settings in Django mitgegeben.
Genauso erfolgt die Ausgabe im Landformat.
FormCountry(Property)
Hier werden die Parameter für jede FomCountry initalisiert. Diese Eigenschaft wird am Ende der Initalisierung der Klasse gesetzt.
Kann als Set und Get verwendet werden.
FormTimeStamp (Property)
Hiermit kann ein Timestamp in der entsprechenden Landesform gesetzt bzw. ausgegeben werden
PdvmDate (Property)
Hiermit wird nur das Datum mit dem PDVM Format (Julianisches Datum) als Integer gesetzt, bzw. ausgegeben. Die Zeit ist hierbei immer 00:00:00 Uhr.
Kann als Set und Get verwendet werden.
PdvmDateT (Property)
Mit dieser Eigenschaft kann das Datum über einen Tuple (mit Jahr, Monat, Tag) gesetzt oder als dieses abgefragt werden.
Die Zeit ist hierbei immer 00:00:00 Uhr
Kann als Set und Get verwendet werden.
PdvmDateTime (Property)
Mit dieser Eigenschaft kann das Datum und die Zeit im PDVM-Format (JJJJTTT,Zeitanteil) gesetzt und abgefragt werden.
Kann als Set und Get verwendet werden.
PdvmDateTimeT (Property)
Mit dieser Eigenschaft kann das Datum und die Zeit über einen Tuple (mit Jahr, Monat, Tag, Stunde, Minute, Sekunde, Microsekunde) gesetzt oder als dieses abgefragt werden.
Kann als Set und Get verwendet werden.
PdvmTime (Property)
Hiermit wird nur das Datum mit dem PDVM Format (Julianisches Datum) als Integer gesetzt, bzw. ausgegeben. Die Zeit ist hierbei immer 00:00:00 Uhr.
Kann als Set und Get verwendet werden.
PdvmTimeT (Property)
Mit dieser Eigenschaft kann die Zeit über einen Tuple mit (Stunde, Minute, Sekunde, Microsekunde) gesetzt oder als dieses abgefragt werden.
Das Datum ist hierbei immer 0 - also kein Datum.
Kann als Set und Get verwendet werden.
transString(pdvmstr, pdvmkat, pdvml)
Übersetzte String 'pdvmstr' mit Kategorie 'pdvmkat'. Die Ausgabe erfolgt mit der Länge 'pdvml'.
def transString (pdvmstr, pdvmkat, pdvml):
vstr = pdvmkat[pdvmstr]
ret =('{:<'+pdvml+'}').format(vstr)
return ret
Weekday (Property)
Dieses Eigenschaft berechnet den Wochentag für alle Daten ab dem Jahre 1 korrekt. Für das Jahr 0 und die negativen Jahre wird davon ausgegangen, dass das Jahr 0 kein Schaltjahr ist.
Die Anzahl von days werden zum PdvmDateTime addiert. Dieses bedeutet, dass der Objektwert entsprechend verändert wird.
Die Anzahl von hours werden zum PdvmDateTime addiert. Dieses bedeutet, dass der Objektwert entsprechend verändert wird.
Die Anzahl von minute werden zum PdvmDateTime addiert. Dieses bedeutet, dass der Objektwert entsprechend verändert wird.
Die Anzahl von month werden zum PdvmDateTime addiert. Dieses bedeutet, dass der Objektwert entsprechend verändert wird.
Zur Monatsperiode werden die angegebenen monate addiert. Das Ergebnis wird zurückgegeben, verändert aber den Wert des Objektes nicht.
Die Anzahl von second werden zum PdvmDateTime addiert. Dieses bedeutet, dass der Objektwert entsprechend verändert wird.
Damit können Zeiten ... vom Jahr bis zu Sekunden alles addiert werden. Wird an einer Stelle kein Wert übereben, wird 0 angenommen. Die Werte im Objekt werden hiermit entsprechend geändert.
Die Anzahl von year werden zum PdvmDateTime addiert. Dieses bedeutet, dass der Objektwert entsprechend verändert wird.
Zur Monatsperiode werden die angegebenen jahre addiert. Das Ergebnis wird zurückgegeben, verändert aber den Wert des Objektes nicht.
Der Tag wird als Zahl ausgegeben
Hier werden die Stunden / 24 * 100 ausgegeben. So sind zum Beispiel 6 Stunden 25 Dezimalstunden
Hier werden die Minuten / 3 *5 ausgegeben. Dieses ist dieselbe Rechnung wie Minuten / 60 * 100. Damit sind zum Beispiel 30 Minuten 50 Dezimalminuten.
Hier werden die Sekunden / 3 *5 ausgegeben. Dieses ist dieselbe Rechnung wie Sekunden / 60 * 100. Damit sind zum Beispiel 30 Sekunden 50 DezimalSekunden.
Die Differenz zwischen den Obkeltwerten und dem mitgebenen PdvmDateTime wird zurückgegeben. Dieses in der Formvon (Jahr, Monat, Tag, Stunden, Minuten, Sekunden).
Ein Datum ohne Nachkommastellen ist von der Zeit her immer 00:00 Uhr. Daher ist der 1. Tag des nächsten Monats der letzte Tag des Monats. Dieses ist immer zu beachten.
Der 1. Tag des Monats (aus dem Datum) wird im PdvmFormat ausgegeben (JahrTTT).
Das aktuelle Jahr unabhängig vom Objektdatum wird als Zahl zurückgegeben.
Das aktuelle Jahr wird ohne das Jahrundert ausgegeben.
Das aktuelle Jahrhundert wird als Zahl ausgegeben.
Die Stunde wird als Zahl ausgegeben.
Hier werden die Stunden mit den Dezimalminuten, DezimalSekunden, Microsekunden als Nachkommawert ausgegeben.
Zum Beispiel sind dann 5,5 Stunden --> 5 Stunden und 30 Minuten
Es ist der letzte Tag des Monats (immer 00:00 Uhr). Das tatsächliche Ende des Monats ist der 1. Tag des folgenden Monats, da hier dann 00:00 Uhr angenommen wird. 24:00 Uhr gibt es leider nicht.
LYear --- Schaltjahr ausgeben 0 kein Schaltjahr / 1 Schaltjahr
Hier werden Minuten mit dezimalem Nachkommateil für Sekunden und Microsekunden ausgegeben.
Zum Beispiel sind dann 24,75 Minuten 24 Minuten und 45 Sekunden.
Die Minute wird als Zahl ausgegeben.
Der Monat wird als Zahl ausgegeben.
Dieses ist eine Funktion innerhalb des Objektes und gibt einfach die aktuelle Zeit im PdvmFormat zurück. Der Inhalt des Objekts wird damit nicht geändert!!
Die Monatsperiode (JahrMM) wird als Zahl ausgegeben.
Die Sekunde wird als Zahl ausgegeben
Rückgabe von Stunden, Minuten, Sekunden, Microsekunden(n).
Format: hh:mm:ss.n / USA h:m:s.n AM/PM
Rückgabe von Stunden, Minuten, Sekunden.
Format: hh:mm:ss / USA h:m:s AM/PM
Der Zeitstempel wird im Landformat ohne Microsekunden ausgegeben. Normale Darstellung
die Zahl der Tage im Jahr des aktuellen Datums werden ausgegeben.
Das Jahr wird als Zahl ausgegeben.
__calcDateToForm() -
Der Eingabestring ohne Trennzeichen wird hier entsprechend dem Landformat in die Werte Jahr, Monat und Tag umgerechnet. Zweistellige Jahreszahl wird aktuell und für die kommenden 5 Jahre mit dem aktuellen Jahrhundert versehen, sonst das letzte Jahrundert.
Eingaben ohne Jahr erhalten das aktuelle Jahr.
__checkDate() - Prüfung für Tag und Monat
Diese Funktionalität prüft den Tag und Monat zum angegebenen Jahr, auch ein Schaltjahr wird berücksichtigt. Damit können nur wirklich existente Daten eingegeben werden.
__convertToPdvmDateTime() - aus Einzelwerten wird ein PdvmDateTime
Die Einzelwerte (Jahr, Monat, Tag, Stunde, Minute, Sekunde) werden hier in ein PdvmDateTime konvertiert.
Verändert die Werte im Objekt nicht.
__lYearFYear() - Berechnung Schaltjahr
Mit dieser Funktionalität wird berechnet ob das eingegebenen Jahr ein Schaltjahr ist oder nicht.
Für das Jahr 0 wird kein Schaltjahr angenommen.
Mit der Property LYear kann der Wert verwendet werden.
__pdvmDateInDateSplit()
Die Eigenschaft pdvmdatetime wird hiermit in die einzelnen Eigenschaften year, month, day, hour, minute, second und microsecond zerlegt. Gleichzeitig werden die einzelnen Tuple für date, time und datetime als Eigenschaften abgelegt.
__pdvmdatime()
Hiermit werden die Eigenschaften im Objekt gesetzt und pdvmdatetime zurückgegeben.
__pdvmdatime(year=0,month=0,day=0,hour=0,minute=0,second=0,microsecond=0)
__splitPdvmDate() - Datum wird zerlegt
Das PdvmDate wird in Jahr, Monat, Tag zerlegt.
__splitPdvmDateTime() - splittet ein pdvmdatetime in die Einzelwerte
Ein pdvmdatetime wird unabhängig vom Objekt in die Einzelwerte gesplittet. Intern wird es zur Differenzrechnung verwendet.
__svalue()
Hiermit werden die Tuple für DateTime, Date und Time gesetzt. Danneben noch die Eigenschaft period.
__upDown - Regelt den Überlauf
Hiermit wird ein Überlauf bestimmt. Als Parameter werden übergeben (Zahl, Eingabewert, Maximal). Zurück gegeben werden die korrigierte Zahl und Eingabewert.
getAYear()
Das aktuelle Jahr wird zurückgegeben.
def getAYear():
ti = Pdvm_DateTime()
ti.PdvmDateTime = getDateTimeNow()
return ti.year
getDateTimeNow()
Das aktuelle Datum mit der aktuellen Zeit wird zurückgegeben.
def getDateTimeNow():
return Pdvm_DateTime().PdvmDateTimeNow()
FullPropertie
Diese Eigenschaft des Objektes gibt alle Eigenschaften als Wörterbuch zurück.
# --------------------------------------------------------------------
# FullProperties --- gibt alle Properties als Wörterbuch zurück
# --------------------------------------------------------------------
def FullProperties(self):
fullprop = {
"PdvmDateTime" : str(self.PdvmDateTime),
"PdvmDate" : str(self.PdvmDate),
"PdvmTime" : str(self.PdvmTime),
"PdvmDateTimeT" : str(self.PdvmDateTimeT),
"PdvmDateT" : str(self.PdvmDateT),
"PdvmTimeT" : str(self.PdvmTimeT),
"Date" : str(self.Date),
"Time" : self.Time,
"YDay" : str(self.YDay),
"Weekday" : str(self.Weekday),
"LYear" : str(self.LYear),
"Period" : str(self.Period),
"FormTimeStamp" : self.FormTimeStamp,
"FirstDayOfMonth" : str(self.FirstDayOfMonth),
"LastDayOfMonth" : str(self.LastDayOfMonth),
"FirstDayOfNextMonth" : str(self.FirstDayOfNextMonth),
"Year" : str(self.year),
"Month" : str(self.month),
"Day" : str(self.day),
"Hour" : str(self.hour),
"Minute" : str(self.minute),
"Second" : str(self.second),
"DecHour" : str(self.DecHour),
"DecMin" : str(self.DecMin),
"DecSec" : str(self.DecSec),
"HourDec" : str(self.HourDec),
"MinDec" : str(self.MinDec),
}
return fullprop
getFormDate(pdvmdate, formCountry)
Mit der Eingabe eines PdvmDate und der FormCountry wird dieses formatiert zurückgegeben. Wird die FormCountry nicht mitgegeben, Wird 'DIN' verwendet.
def getFormDate(tidt,fC='DIN'):
ti = Pdvm_DateTime(fC)
ti.PdvmDateTime = tidt
return ti.Date
getFormTime(pdvmdatetime, formCountry)
Mit der Eingabe eines PdvmTime und der FormCountry wird diese formatiert zurückgegeben. Wird die FormCountry nicht mitgegeben, Wird 'DIN' verwendet.
def getFormTime(tidt,fC='DIN'):
ti = Pdvm_DateTime(fC)
ti.PdvmDateTime = tidt
return ti.Time
getFormTimeStamp(pdvmdatetime, FormCountry)
Mit der Eingabe eines PdvmDateTime und der FormCountry wird dieser formatiert zurückgegeben. Wird die FormCountry nicht mitgegeben, Wird 'DIN' verwendet.
def getFormTimeStamp(tidt,fC='DIN'):
ti = Pdvm_DateTime(fC)
ti.PdvmDateTime = tidt
return ti.FormTimeStamp
PrintFullProperties - als Tabelle im Log
Die Properties werden übersetzt in der Console ausgegeben. Dient dem Test und zur Überprüfung bei einer Fehlersuche
--------------------------------------------------------------------
def PrintFullProperties(self, mod):
l = '35'
fullp = self.FullProperties()
if mod == 1:
print(multiChar("-",70,1))
for pro in fullp:
print(transString (pro, self.proptext, l)+" : "+fullp[pro])
print(' ['+pro+']')
print(multiChar("-",70,0))
else:
print(transString('FormTimeStamp', self.proptext, l)+" : "+fullp['FormTimeStamp'])
stringToLength(pdvmstr, pdvml)
Der String 'pdvmstr' auf die Länge 'pdvml' konvertieren
def stringToLength (pdvmstr, pdvml):
ret =('{:<'+pdvml+'}').format(pdvmstr)
return ret
transString(pdvmstr
# --------------------------------------------------------------------
# übersetzte String 'pdvmstr' mit Kategorie 'pdvmkat' auf die Länge 'pdvml'
# --------------------------------------------------------------------
def transString (pdvmstr, pdvmkat, pdvml):
vstr = pdvmkat[pdvmstr]
ret =('{:<'+pdvml+'}').format(vstr)
return ret
transStringOne(lang, pdvmkat, pdvmstr, pdvml)
Übersetzte String 'pdvmstr' mit Kategorie 'pdvmkat' auf die Länge 'pdvml' direkt aus dem Wörterbuch mit der Sprache 'lanq'
def transStringOne (lang, pdvmkat, pdvmstr, pdvml):
vstr = transkateone(pdvmkat, pdvmstr, lang)
ret =('{:<'+pdvml+'}').format(vstr)
return ret
__clacToDayInYear() - Tag im Jahr
Mit der Angabe von Jahr, Monat, Tag wird der Tag im Jahr (Industrietag) bestimmt.
--------------------------------------------------------------------
def __calcToDayInYear(self, year, month, day):
s = self.__lYearFYear(year)
yday = int(monthdays[month][s]+day)
return yday
__transMM() - Übersetzung des Monatnamens
# Monatsnamen
def __transMN(self, tmn):
return transkateone('monthname',str(tmn-1), self.language)
__transYN() - Ja/Nein 1/0 wird übersetzt
# Translation Ja/Nein 1/0
def __transYN(self, tjn):
return transkateone('transYN',str(tjn), self.language)
__weekdayName() - Übersetzung des Wohentages
# Wochentagname
def __weekdayName(self, gwd):
return transkateone('weekdays',str(gwd), self.language)
Hauptprogramm - Testumgebung - Initalisierung
Mit der direkten Ausführung von pdvm_datetime.py wird die Testumgebung in der Form eines Hauptprogrammes ausgeführt. Hier wid dieses Umgebung beschrieben und die einzelnen Initialwerte.
Teststart und -ablauf
Hier wird der Testablauf, ein paar Besonderheiten der Tests in pdvm_datetime.py beschrieben
Die Tests und der Ablauf
Die Tests aus dem Wörterbuch werden hier im Einzelnen beschrieben. Hieraus ist gut ersichtlich, wie Pdvm_DateTime funktioniert und angewendet werden kann.
Auf Besonderheiten wird hier auch hingewiesen.