CF2021~:DateFormatのマスクの指定に大文字Dを指定している場合の動作変更について

ColdFusion 2016 Update 3以降より、DateFormat関数のマスクの指定の際に、大文字と小文字の両穂うが使用できるようになりましたが、これに関連して、ColdFusion 2021では、マスクの指定の際に、大文字のDを指定した際の動作が変更されました。

従来のバージョンでは、マスクにDを指定してもdと同じ動作(日を数字で表示。1~31)になりましたが、ColdFusion 2021以降から、マスクに大文字のDを指定すると、その年の何日目であるかを表す数字が返されるようになりました。

2020年12月17日に下記のプログラムを実行
<cfscript>
    writeOutput(dateformat(now(), "mm-D-yyyy") & "") // 戻り値 12-352-2020
    writeOutput(dateformat(now(), "mm-d-yyyy") & "") // 戻り値 12-17-2020
</cfscript>

この動作の変更により、従来からのプログラムの移行において、DateFormatのマスクにDを使用していた場合には注意が必要です。

2021年4月更新

マスクに大文字の D を指定しても従来と同様の動作(dを指定した時と同じ動作)に戻す個別パッチ が公開され、その機能はUpdate 1以降に含まれるようになりました。そのため、以前の動作に戻したい場合は、Updateの適用を行ってください。

ColdFusion の DateFormat 関数(2021 リリース) (adobe.com)

ただし、Update 1を適用だけでは、以前の動作には切り替わりません。さらに、JVM フラグの追加が必要です。-Dcoldfusion.datemask.useDasdayofmonth=true を ColdFusion Administrator の「サーバーの設定 > JavaとJVM」の「JVM引数」に追加(スペース区切りで改行は入れない)してください。その後、ColdFusion を再起動することで、従来の動作に戻すことができます。このフラグはDateFormat, DateTimeFormat関数のいずれにも有効です。

2024年2月更新

ColdFusion 2023も同様の動作となります。以前の動作に戻すには-Dcoldfusion.datemask.useDasdayofmonth=true を ColdFusion Administrator の「サーバーの設定 > JavaとJVM」の「JVM引数」に追加(スペース区切りで改行は入れない)してください。その後、ColdFusion を再起動することで、従来の動作に戻すことができます。

※カテゴリを「ColdFusion 2021情報」から「タグ・関数・構文など」に変更しました


 


記事公開日:2020年12月17日
最終更新日:2024年02月22日


x

Sample Modal Window

This is just a sample…

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit iaculis libero sed tristique. Quisque mollis dolor non tellus placerat vitae sodales lectus porta. Curabitur ut suscipit tellus. Maecenas rhoncus, ante vitae vehicula vestibulum, metus sapien dapibus tellus, et mattis dolor neque vitae nisl. Nullam eleifend ultrices ipsum eget pretium. Curabitur semper metus ut ante adipiscing nec volutpat sem rutrum. Nullam a nisi lacus, non interdum ante. Vivamus ante augue, commodo vel egestas sed, pharetra nec dui. Quisque sed tellus felis. Donec ipsum mauris, sagittis eu accumsan in, aliquam non ipsum.

Vestibulum tempor nunc nec felis scelerisque eget elementum erat dignissim. Ut vel ipsum mollis orci venenatis luctus. Aenean vehicula quam vel quam porttitor ac iaculis elit pulvinar. Proin consequat, ipsum eu venenatis semper, justo turpis posuere tortor, ac placerat metus nisl et lectus. Nulla cursus dui id nunc ullamcorper sed semper nisl lobortis. Aliquam erat volutpat. Phasellus arcu ante, imperdiet in ornare sed, laoreet eu massa.