Probleme mit ParseDate unter Linux

Hallo in die Runde.

Ich nutze folgenden Code:
d=New Date
lokal=“DEC 1852”
thetruebool=ParseDate(lokal,d)
If theTrueBool then
MsgBox d.LongDate
End

Unter Windows und Mac OS ist thetruebool fase. Das erwarte ich auch so. Unter (Mint-)Linux ist es true und das Datum ist auf “Mittwoch, Dezember 18, 2052” eingestellt.

Ist das ein Denkfehler meinerseits oder sollte ich das als Fehler melden?
Hat jemand einen Workarround dafür?

Gruß, Stefan Mettenbrink.

Es ist eher zufllig, da das geklappt hat. “DEC 1852” ist kein vollstndiges Datum. Wenn Du ein spezielles Datumsformat hat, ist es - meines Erachtens - immer besser, da selbst zu parsen.

Ich dachte, genau für diesen Zweck ist ParseDate. Damit ich nicht jeden String selbst auf ein korrektes Datumsformat prüfen muss.

Mir geht es eher nicht darum, dass ich Date mit einem vorgegebenem Datum füttern möchte sondern darum, zu klären, ob der vorgegebene Stein ein korrektes und vollständiges (Kalender-) Datum enthält. In diesem Fall hätte ich erwartet, dass Xojo false liefert, weil das Datum unvollständig ist. Genau so verhält sich Xojo unter Windows und Mac OS.

Anders gefragt: Warum bekomme ich unter Linux von ParseDate ein anderes Ergebnis als unter Mac OS und Windows?

BTW, mit REALstudio auf Windows funktionierte ParseDate mit Datumsangaben vor 1600 nicht. Hat sich daran etwas geändert?

Gruß, Stefan Mettenbrink.

ParseDate ist für vollständige Datums-Daten des jeweiligen OS und verwendet die Routinen, die das OS dafür bereitstellt. Daher die unterschiedlichen Ergebnisse. Und wenn die Datums-Daten nicht von einem User kommen, ist ParseDate nicht für diese Aufgabe geeignet.

OK, dann habe ich das immer falsch verwendet. Ich bin davon ausgegangen, dass hier eine Datumsprüfung erfolgt (z. B. Gültigkeitsprüfung von Schalttagen).
Aber die Dokumentation ist hier eindeutig:
The Text parameter must be a valid string representation of a date.

Danke für die Klärung.

ist zwar nicht Deine Frage, aber ich habe auch Probleme mit Date in Linux

LongDate wird von Xojo immer falsch dargestellt (in allen anderen Programmen wird es richtig dargestellt)

dim d as new date MsgBox d.LongDate

ergibt

Sonntag, Juli 31, 2016

so habe ich eine Methode erstellt um es umzuwandeln

[code]Function ConvertLongDate(all as String) As String
dim month, day, dayname, year as string

dayname = NthField(all, “,”, 1)
month = NthField(all, ", ", 2)
month = NthField(month, " ", 1)
day = NthField(all, ", ", 2)
day = NthField(day, " ", 2)
day = NthField(day, “.”, 1)
if left(day, 1) = “0” then day = right(day, 1)

year = right(all, 4)

return dayname + ", " + day + ". " + month + " " + year
End Function[/code]

dim d as new date MsgBox ConvertLongDate(d.LongDate)

ergibt dann

Sonntag, 31. Juli 2016