我們收到的日期節點的XML文件,如下所示:的ColdFusion - 解析字符串日期到日期時間格式
<createdDate>1/11/2008 7:04:28 a.m.</createdDate>
日期是英國格式DD/MM/YYY,那麼2008年1月11日是11月1日2008.
我們運行一個coldfusion函數來解析xml並插入到數據庫中。相關的數據庫字段是datetime數據類型,需要保持這種狀態。我該如何將日期的字符串表示形式格式化爲數據庫將接受的格式?
我們收到的日期節點的XML文件,如下所示:的ColdFusion - 解析字符串日期到日期時間格式
<createdDate>1/11/2008 7:04:28 a.m.</createdDate>
日期是英國格式DD/MM/YYY,那麼2008年1月11日是11月1日2008.
我們運行一個coldfusion函數來解析xml並插入到數據庫中。相關的數據庫字段是datetime數據類型,需要保持這種狀態。我該如何將日期的字符串表示形式格式化爲數據庫將接受的格式?
不是一個理想的情況,但是您獲取數據的格式,特別是am/pm字符串中的點使得它很難閱讀,並且最重要的是它以英國日期格式。這可以幫助:
<cfset x="21/11/2008 7:04:28 p.m.">
<cfset x=Replace(x,".","","All")>
<cfset y=LSDateFormat(x,"mm/dd/yyyy","English (UK)")>
<cfoutput>
x====#x#
<br/>y===#y#
<cfset z=CreateDateTime(Year(y),month(y),day(y),hour(x),minute(x),second(x))>
z====#z#
<cfset someDatevare=LSParseDateTime(x,"English (UK)")>
</cfoutput>
編輯作爲利提到,去除串週期或任何其他非標準的字符,然後LSParseDateTime將返回日期時間對象。
它工作。太棒了,謝謝我的朋友。 – user460114
是的,「am/pm」中的非標準時段是阻止CF隱式轉換字符串的原因。這一方一旦被移除,使用['LSParseDateTime()'](http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-70e3.html)就像@Antony建議的那樣效率更高。與'LSDateFormat'不同,'LSParseDateTime'已經返回一個日期對象。所以你可以跳過'CreateDateTime'調用和隱式字符串/日期轉換。 – Leigh
好的建議Leigh。在答案中加上這一點,這樣可以幫助未來的讀者。 –
你正在運行什麼版本的CF? –
您是否試過['parseDateTime'](https://wikidocs.adobe.com/wiki/display/coldfusionen/ParseDateTime)或['lsParseDateTime'](https://wikidocs.adobe.com/wiki/display/) coldfusionen/LSParseDateTime)功能? – Antony
我建議要求XML文件的提供者將日期格式更改爲更加標準化的內容。 – andrewdixon