2014-08-28 7 views
5

मुझे कोड दिया गया था जो दिनांक TimeFormat फ़ंक्शन का उपयोग करता है। मूल डेवलपर ने "एमएम-एचएच-वाई वाई-डीडी-एनएन" का मुखौटा इस्तेमाल किया। यह कोड उसकी मशीन पर काम करता है। और यह हमारे परीक्षण सर्वर पर काम करता है। लेकिन यह मेरी स्थानीय मशीन पर काम नहीं करता है। जब मैं मास्क को "एमएम-एचएच-वाई-डीडी-एनएन" में बदलता हूं तो मैं इसे केवल तब ही काम कर सकता हूं;दिनांक के लिए मान्य मुखौटा पैटर्न TimeFormat

नोट अंतर यहां अपर केस "YY" और लोअर केस "yy"

https://wikidocs.adobe.com/wiki/display/coldfusionen/DateTimeFormat पर दस्तावेज़ को देख में यह लोअर केस yy तरह लग रहा है काम करने के आधिकारिक तौर पर समर्थित तरीका है।

क्या किसी को पता है कि कुछ स्थितियों में वाई वाई का समर्थन क्यों किया जाएगा, न कि दूसरों को? मुझे संदेह है कि यह कहीं स्थानीयकरण कोड हो सकता है, लेकिन मुझे अपने सीएफ व्यवस्थापक में कोई भी अंतर नहीं है और एक परीक्षण सर्वर पर है। क्या वाई वाई काम करने के लिए मैं अपनी मशीन पर कुछ कर सकता हूं?

मेरे मशीन एक विंडोज 7 वी एम मैक पर चल रहा है, जबकि सर्वर Windows सर्वर 2008

मेरे JVM 1.6.0_29 है, जबकि सर्वर चल रहा है है 1.7.0

इन मतभेदों के लिए पर्याप्त हैं इस मुद्दे की व्याख्या करें?

यहाँ परीक्षण के लिए कुछ सरल कोड है:

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

सटीक सीएफ रिलीज और पैच स्तर शायद जेवीएम और ओएस संस्करणों से अधिक प्रासंगिक है। –

+0

@AdamCameron दोनों अद्यतित हैं। कोल्डफ्यूजन 10,287689। हॉटफिक्स 13 –

+2

@ एडम, अगर यह समस्या JVM संस्करण में अंतर से संबंधित थी तो यह मुझे आश्चर्य नहीं करेगा। जावा 6 से 7 तक चलते समय कोल्डफ्यूजन व्यवहार के साथ कुछ अन्य असंगतताएं रही हैं। –

उत्तर

2

जावा बदल गया है। कोल्डफ्यूजन परवाह नहीं है। यह मास्क तर्क सीधे माध्यम से गुजरता है।

  • Java 6 docs केवल y

  • Java 7 docs यह

    राजधानीजावा 7 डॉक्स से दोनों y और Y

कुछ पर प्रकाश डाला समर्थन करता है, कहते हैं कि यह समर्थन करता है, का कहना है किएक "सप्ताह का वर्ष"

एक सप्ताह का वर्ष WEEK_OF_YEAR चक्र के साथ समन्वयित है। के बीच के सभी सप्ताह पहले और अंतिम सप्ताह (समावेशी) के समान सप्ताह वर्ष मूल्य होता है। इसलिए, सप्ताह के पहले और अंतिम दिनों में अलग-अलग कैलेंडर वर्ष मान हो सकते हैं।

यदि सप्ताह वर्ष 'Y' निर्दिष्ट है और कैलेंडर किसी भी सप्ताह के वर्षों का समर्थन नहीं करता है, तो कैलेंडर वर्ष ('y') का उपयोग इसके बजाय किया जाता है।

संबंधित मुद्दे