| |
|
|
Clemens Meier | Hallo zusammen,
ich benutze XProfan erst wieder seit ein paar Tagen, um für einen Freund ein Geburtstagsgeschenk zu basteln. Dabei fiel mir auf, dass in XProfan so gut wie keine Datum- und Uhrzeitfunktionen zu finden sind. Man bekommt zwar das aktuelle Datum und die aktuelle Uhrzeit, doch das war es schon. Nichts mit berechnen, vergleichen oder ähnliches. Und da ich auch noch ein begeisterter PHPler bin, der Dinge wie date und mktime kennt, habe ich mal dran gesetzt und beides für XProfan als include-Datei realisiert.
Ich habe allerdings ein paar Stunden gebraucht, weil beim Testen spezieller Sonderfälle immer wieder kleinere Probleme auftauchten, die hoffentlich nun alle beseitigt sind.
Gültigkeitsbereich: 1970 bis 2099 Sommerzeit und GMT wird nicht berücksichtigt (wäre nur wichtig, wenn man über den Rechner hinaus Zeiten vergleichen muss)
Angaben von Monats- und Wochentagsnamen sind in Deutsch. Wochennummern nach ISO (ächz, war nicht leicht). Und natürlich kann man innerhalb der mktime - Funktion auch rechnen und die Funktion übernimmt die Korrektur der Daten (Beispiel siehe beiliegender datumuhrzeit.prf). Weiteres siehe hinweis.txt in der Zip-Datei.
Ich hoffe, es kann gebraucht werden und ich freue mich auf ein Feedback
Gruß
Clemens |
|
|
| |
|
|
|
| Hallo Clemens,
ja, schöne Arbeit! Die Testwerte passten, bis auf den letzten. Vielleicht ist es auch nur ein Verständnisfehler von mir?
Kalenderwoche am 01.01.2006: 52
Befinden wir uns am 01.01. nicht in Kalenderwoche 1?
Warum postest du deine Inc nicht im Wettbewerbsbereich für 2006? Letztes Jahr war eine Inc auch sehr erfolgreich. |
|
|
| |
|
|
|
Frank Abbing | Sorry, hab aus Versehen als Gast gepostet. War von mir. |
|
|
| |
|
|
|
Clemens Meier | Da liegt wohl ein Verständnisproblem vor. Man schaue auf einen beliebigen Kalender der auch eine Wochennummer mitführt (der Outlook geht auch). Schön wäre es, wenn am 01.01. eines jeden Jahres die Wochenummer mit 1 beginnen würde.
Zur Info: Die Woche fängt mit dem Montag an (nicht mit Sonntag, obwohl Sonntag die Wochentagzahl 0 und Montag die Wochentagzahl 1 hat). Das heißt, am 1. Montag im Jahr beginnt man mit 1 zu zählen, es sei denn ... und jetzt wirds kompliziert ... wenn der Teil der Woche zu Beginn des Jahres mehr als 3 Tage hat.
Wettbewerb, mmh? Bin zwar kein Typ dafür, aber ich schau mal, wie es funktioniert. |
|
|
| |
|
|
|
| Ja, im deutschen Kalender beginnt die erste Woche mit der Woche zu zählen, die mindestens 4 Tage hat. Durch diese Verschieberei kann es in einem Jahr sogar 53 Wochen geben - es muß also auch das Vorjahr mit beachtet werden, wenn die erste Woche nicht bei 1 beginnt (Entscheidung: 52. od. 53. Woche des Vorjahres).
[quote:0bf01e8fa7=Clemens Meier]Und da ich auch noch ein begeisterter PHPler bin[/quote:0bf01e8fa7] Dann schau Dir auch mal das Codesnippet unix time PHP an.
Ansätze für Datum und Zeitberechnungen findest Du über die Suchfunktion, es gab da schon einige Sachen.
Vielleicht entsteht ja doch noch mal ein kompletter Satz an Datum-/Zeitroutinen.
Schöne Grüße Michael Wodrich |
|
|
| |
|
|
|
Jac de Lad | Geht prima, hab bis jetzt keine Fehler entdecken können.
@Frank: Da hätte ich Parcival also auch im Wettbewerb posten können??? Geht das jetzt auch noch, obwohl ich schon so viel hin- und hergepostet hab???
Jac |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 17.03.2006 ▲ |
|
|
|
|
Frank Abbing | Klar, Jac. Wüsste nicht, was dagegen sprechen sollte. |
|
|
| |
|
|
|
ByteAttack | Naja! Ich weiß jetzt echt nicht woran es liegt, aber die Include hängt sich auf, sobald der 31.12.2007 ins Spiel kommt. Bitte mal Probieren:
$I date.inc
Declare monat%,tag%,jahr%,temp$
WindowStyle 26
WindowTitle date.inc Test
Window 0,0-%maxX,%maxY
Erster Test
monat%=12
tag%=31
jahr%=2008
temp$=Ein Tag später als der +str$(tag%)+.+Str$(monat%)+.+Str$(jahr%)+ ist der:
print temp$+Ins$(.,Ins$(.,fdate(%d%m%Y,mktime(0,0,0,monat%,tag%+1,jahr%)),3),6) +1Tag
Zweiter Test
jahr%=2007
temp$=Ein Tag später als der +str$(tag%)+.+Str$(monat%)+.+Str$(jahr%)+ ist der:
print temp$+Ins$(.,Ins$(.,fdate(%d%m%Y,mktime(0,0,0,monat%,tag%+1,jahr%)),3),6) +1Tag
waitmouse
|
|
|
| |
|
|
|
GDL | Gültigkeitsbereich: 1970 bis 2099
Sniff, bin aba 61 geboren.
Servus Georg |
|
|
| |
|
|
|
Dieter Zornow | Bei mir stimmt einiges nicht beim Test z.B. jetziges Datum und Uhrzeit vor 100 Stunden kommt bei mir 01.01.1970 00.00:00, das Beispiel von Marc ist auch daneben.
Gruß aus Bangkok
Dieter |
|
|
| Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 31.10.2007 ▲ |
|
|
|
|
ByteAttack | Naja, ich glaube mit der MWDATE.DLL ist man besser dran. (Geht bloß leider nur unter Profan ab Version 10) |
|
|
| |
|
|
|
Michael Wodrich | Marc-Gordon
Naja, ich glaube mit der MWDATE.DLL ist man besser dran. (Geht bloß leider nur unter Profan ab Version 10)
Dann muß ich mich da wohl doch noch mal dransetzen?
Die Includedatei kann so angepasst werden, das auch frühere Versionen damit klar kommen (dann fallen einige in der Include programmierte Dinge weg; oder werden umgeschrieben).
Ich werds mir nochmal in die ToDo-Liste setzen...
Schöne Grüße Michael Wodrich
P.S.: Die DLL fängt bei 1600 an (wegen Schaltjahr-Gedöns). Ich persönlich kenne keinen mehr persönlich, der vorher geboren wurde. |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 31.10.2007 ▲ |
|
|
|