首页 > 解决方案 > Dateformat ww 返回错误的一年中的一周

问题描述

有人可以解释为什么得到这个日期的周返回 1 而不是 53?我如何让coldfusion在这个日期返回53?

<cfscript>
    Date1 = "{ts '2019-12-30  12:00:00'}";
    dateformat= DateFormat(Date1)
    week= DateFormat(Date1,"ww")
    writeOutput("Week: " & week & "<br/>")
</cfscript>

见coldfusion小提琴:https ://cffiddle.org/app/file?filepath=ab0d50c0-d268-4769-b5eb-a16a8fca985a/dc6aebb2-76a8-4485-a5eb-e9eb17b293cb/9e6e8b2c-f570-45be-88a1-49db39f8c69b.cfm

标签: coldfusion

解决方案


你可以使用week(Date)而不是尝试dateformat

我不确定为什么dateformat将 2019 年的最后一周作为 2020 年的第一周。很可能dateformat不是为处理这些细微的逻辑而设计的。由于Week必须为此目的专门设计功能,因此明智的做法是利用它。如果我能找到任何具体建议问题原因的内容,我会更新答案dateformat

@Agreax 的评论更新:

Week()使用 Adob​​e 的内部逻辑。DateFormat()使用 java 的SimpleDateFormat类,它“.. 取决于 getMinimalDaysInFirstWeek()、getFirstDayOfWeek() 和 1 月 1 日的星期几的值..”。在默认设置下,2019 年 12 月 30 日被视为 2020 年第一周的一部分。


推荐阅读