dateTimeFormat的有效掩码模式

时间:2014-08-28 11:09:21

标签: java coldfusion java-7 java-6

我获得了使用dateTimeFormat函数的代码。原始开发人员使用了" MM-HH-YY-dd-NN"的掩模。这段代码适用于他的机器。它适用于我们的测试服务器。但它在我的本地机器上不起作用。我只能在将面具更改为" MM-HH-yy-dd-NN&#34 ;;

时才能使其正常工作

注意这里的区别是大写" YY"小写" yy"

在查看https://wikidocs.adobe.com/wiki/display/coldfusionen/DateTimeFormat处的文档时,看起来小写yy是官方支持的做事方式。

有谁知道为什么YY会在某些情况下得到支持而不是其他情况?我怀疑它可能是某些本地化代码,但我没有发现我的CF管理员和测试服务器上的差异。我可以在机器上做些什么来让YY工作吗?

我的计算机是在Mac上运行的Windows 7 VM,而服务器是Windows服务器2008。

当服务器运行1.7.0时,我的JVM是1.6.0_29

这些差异是否足以解释这个问题?

以下是一些简单的测试代码:

<cfscript>
    testTime=now();
    lowermask= "MM-HH-yy-dd-NN";
    uppermask= "MM-HH-YY-dd-NN";
    result = {
        lower=dateTimeFormat(testTime, lowermask)
        ,upper=dateTimeFormat(testTime, uppermask)
    };
    writedump(result);
</cfscript>

看起来问题出现在底层Java版本中。我得到的错误是:

java.lang.IllegalArgumentException: Illegal pattern character 'Y'
    at java.text.SimpleDateFormat.compile(SimpleDateFormat.java:768)
    at java.text.SimpleDateFormat.initialize(SimpleDateFormat.java:575)
    at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:500)
    at coldfusion.util.DateUtils.getCFDateTimeFormat(DateUtils.java:673)
    at coldfusion.util.DateUtils.formatDateTime(DateUtils.java:942)
    at coldfusion.runtime.CFPage.LSDateTimeFormat(CFPage.java:1750)
    at coldfusion.runtime.CFPage.LSDateTimeFormat(CFPage.java:1742)
    at coldfusion.runtime.CFPage.DateTimeFormat(CFPage.java:1722)
    at cftemp2ecfm333879290.runPage(C:\inetpub\wwwroot\temp.cfm:7)
    at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:244)
    at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:444)
    at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65)
    at coldfusion.filter.IpFilter.invoke(IpFilter.java:64)
    at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:449)
    at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)
    at coldfusion.filter.PathFilter.invoke(PathFilter.java:112)
    at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:94)
    at coldfusion.filter.BrowserDebugFilter.invoke(BrowserDebugFilter.java:79)
    at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)
    at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)
    at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:58)
    at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
    at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
    at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62)
    at coldfusion.CfmServlet.service(CfmServlet.java:219)
    at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)
    at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:414)
    at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:204)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:298)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)

1 个答案:

答案 0 :(得分:2)

Java发生了变化。 ColdFusion并不关心。它直接通过掩码参数。

Java 7文档中的一些要点

  

资本Y是&#34;周年&#34;

     

周年与WEEK_OF_YEAR周期同步。几周之间   第一周和最后一周(包括)具有相同的周年值。   因此,一周的第一天和最后一天可能会有所不同   历年值。

     

如果指定了周年'Y'且日历不支持任何日期   一周,使用日历年('y')。