Wenn ich diesen Testcode auf meinem Entwicklungscomputer ausführe, funktioniert er wie erwartet. CF9.01Problem mit der LSParseDateTime-Funktion auf dem Server nur, obwohl das Servergebietsschema richtig eingestellt ist
ich in Europa bin Euro Datumsformat so ist 1957.10.09 10. 1957 September
<cfset testDate="10/09/1957">
<cfoutput>
Initial string = "#testDate#"<br>
LSparsedatetime output = #lsparsedatetime(session.form.patientDOB)#<br>
parsedatetime output = #parsedatetime(session.form.patientDOB)#
</cfoutput>
Ausgabe am Testmaschine
Initial string = "10/09/1957" LSparsedatetime output = {ts '1957-09-10 00:00:00'} parsedatetime output = {ts '1957-10-09 00:00:00'}
Same ist Code, Ausgabe am Live-Server ist
Initial string = "10/09/1957"
LSparsedatetime output = {ts '1957-10-09 00:00:00'}
parsedatetime output = {ts '1957-10-09 00:00:00'}
Server-Betriebssystem ist Windows Web Server 2008 R2. Ich habe das Kontrollkästchen Systemsteuerung> Datum und Uhrzeit aktiviert und es ist korrekt auf London eingestellt. Webserver ist IIS7, aber ich glaube nicht, dass das etwas bewirken würde? soweit CF betrifft es denkt, dass der Server ist:
IN Region und Sprache, ist die Lage nach Großbritannien und in den Verwaltungs (Wechselsystem locale) es richtig ist, auch als English (United Kingdom)
-Update eingestellt auf US-Gebietsschema.
das Lauf ...
<cfset testDate="10/09/1957">
<cfoutput>
Initial string = "#testDate#"<br>
#getLocale()#:<br>
LSparsedatetime output = #lsparsedatetime(testDate)#<br>
parsedatetime output = #parsedatetime(testDate)#<br>
<P>
<cfset SetLocale("en_GB") />
en_GB:<br>
LSparsedatetime output = #lsparsedatetime(testDate)#<br>
parsedatetime output = #parsedatetime(testDate)#<br>
</cfoutput>
gibt diese Ausgabe
Initial string = "10/09/1957"
English (US):
LSparsedatetime output = {ts '1957-10-09 00:00:00'}
parsedatetime output = {ts '1957-10-09 00:00:00'}
en_GB:
LSparsedatetime output = {ts '1957-09-10 00:00:00'}
parsedatetime output = {ts '1957-10-09 00:00:00'}
Aber hier Bestätigung der Servereinstellungen.
Erzwingen locale mit setLocale im Code löst Verhalten zu korrigieren.
Danke Sergii, erzwingt das Gebietsschema funktioniert. Seltsamerweise denkt CF, dass sich der Server trotz meiner Einstellungen auf dem Gebietsschema "US" befindet. Die Verwendung von "setlocale" sorgt dafür, dass er korrekt funktioniert. – Saul
So war das Gebietsschema :) +1 für setLocale(). –