2014-08-28 21 views
5

Tôi đã được cấp mã sử dụng hàm dateTimeFormat. Nhà phát triển ban đầu đã sử dụng mặt nạ "MM-HH-YY-dd-NN". Mã này hoạt động trên máy của anh ta. Và nó hoạt động trên máy chủ thử nghiệm của chúng tôi. Nhưng nó không hoạt động trên máy cục bộ của tôi. Tôi chỉ có thể làm cho nó hoạt động khi tôi thay đổi mặt nạ thành "MM-HH-yy-dd-NN";Mẫu mặt nạ hợp lệ cho dateTimeFormat

Lưu ý sự khác biệt ở đây là trường hợp trên "YY" và chữ thường "yy"

Trong quá trình tìm tài liệu tại https://wikidocs.adobe.com/wiki/display/coldfusionen/DateTimeFormat có vẻ như thấp hơn trường hợp yy là cách hỗ trợ chính thức làm việc.

Có ai biết tại sao YY sẽ được hỗ trợ trong một số trường hợp chứ không phải người khác? Tôi nghi ngờ nó có thể là một số mã địa phương hóa một nơi nào đó, nhưng tôi không tìm thấy bất kỳ sự khác biệt trong quản trị CF của tôi và một trên máy chủ thử nghiệm. Có cái gì tôi có thể làm trên máy của tôi để làm cho công việc YY?

máy của tôi là một Windows 7 máy ảo chạy trên Mac trong khi máy chủ là một máy chủ Windows 2008.

My JVM là 1.6.0_29 trong khi máy chủ đang chạy 1.7.0

Are những khác biệt này đủ để giải thích vấn đề?

Dưới đây là một số mã đơn giản để kiểm tra:

<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> 

Dường như vấn đề là trong phiên bản Java cơ bản. Lỗi tôi nhận được là:

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) 
+0

Mức phát hành và bản vá chính xác của CF có lẽ có liên quan hơn so với các phiên bản JVM và OS ở đây. –

+0

@AdamCameron Cả hai đều được cập nhật. ColdFusion 10,287689. HotFix 13 –

+2

@Adam, nó sẽ không làm tôi ngạc nhiên nếu vấn đề có liên quan đến sự khác biệt trong phiên bản JVM. Đã có một vài mâu thuẫn khác với hành vi ColdFusion khi di chuyển từ Java 6 đến 7. –

Trả lời

2

Java đã thay đổi. ColdFusion không quan tâm. Nó chuyển đối số mặt nạ thẳng qua.

Một vài điểm nổi bật từ Java 7 docs

Capital Y là "năm tuần"

Một tuần trong tuần được đồng bộ hóa với chu kỳ WEEK_OF_YEAR. Tất cả các tuần giữa tuần đầu tiên và cuối cùng (bao gồm) có cùng giá trị năm trong tuần. Do đó, ngày đầu tiên và cuối cùng của một tuần có thể có các giá trị khác nhau trong năm .

Nếu tuần năm 'Y' được chỉ định và lịch không hỗ trợ bất kỳ năm tuần nào, năm dương lịch ('y') được sử dụng thay thế.

Các vấn đề liên quan