開発マシンでこのテストコードを実行すると、期待通りに動作します。 CF9.01サーバーロケールが正しく設定されているにもかかわらず、サーバー上のLSParseDateTime関数で問題が発生する
テストマシン上の9月10日1957年
<cfset testDate="10/09/1957">
<cfoutput>
Initial string = "#testDate#"<br>
LSparsedatetime output = #lsparsedatetime(session.form.patientDOB)#<br>
parsedatetime output = #parsedatetime(session.form.patientDOB)#
</cfoutput>
出力が
Initial string = "10/09/1957" LSparsedatetime output = {ts '1957-09-10 00:00:00'} parsedatetime output = {ts '1957-10-09 00:00:00'}
同じである1957年10月9日ので、私はユーロの日付形式を使用して、ヨーロッパにいますコード、ライブサーバーの出力は
Initial string = "10/09/1957"
LSparsedatetime output = {ts '1957-10-09 00:00:00'}
parsedatetime output = {ts '1957-10-09 00:00:00'}
です。
サーバーOSはWindows Web Server 2008 R2です。コントロールパネル>日付と時刻の設定をチェックしましたが、正しくロンドンに設定されています。 WebサーバーはIIS7ですが、それは何かに影響するとは思いませんか?地域と言語の
、場所がイギリスに設定され、管理(変更システムロケール)で、それはまた、英語(イギリス)
アップデートとして正しいです:限りCFが懸念しているとして、それは、サーバーがあると考えて米国のロケールでこれを実行する
...<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>
は、この出力にサーバ設定の
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'}
しかし、ここでの確認を提供します。コードであるsetLocaleと
強制ロケールが動作を修正するために解決します。
Sergiiさんに感謝し、ロケールを強制します。不思議なことに、CFは私の設定にもかかわらず、サーバが米国のロケールにあると思っています.setlocaleを使うと正しく動作します。 – Saul
それはロケールだった:) setLocale()の+1。 –