2014-05-19 44 views
1

我們收到的日期節點的XML文件,如下所示:的ColdFusion - 解析字符串日期到日期時間格式

<createdDate>1/11/2008 7:04:28 a.m.</createdDate> 

日期是英國格式DD/MM/YYY,那麼2008年1月11日是11月1日2008.

我們運行一個coldfusion函數來解析xml並插入到數據庫中。相關的數據庫字段是datetime數據類型,需要保持這種狀態。我該如何將日期的字符串表示形式格式化爲數據庫將接受的格式?

+0

你正在運行什麼版本的CF? –

+1

您是否試過['parseDateTime'](https://wikidocs.adobe.com/wiki/display/coldfusionen/ParseDateTime)或['lsParseDateTime'](https://wikidocs.adobe.com/wiki/display/) coldfusionen/LSParseDateTime)功能? – Antony

+4

我建議要求XML文件的提供者將日期格式更改爲更加標準化的內容。 – andrewdixon

回答

2

不是一個理想的情況,但是您獲取數據的格式,特別是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將返回日期時間對象。

+0

它工作。太棒了,謝謝我的朋友。 – user460114

+2

是的,「am/pm」中的非標準時段是阻止CF隱式轉換字符串的原因。這一方一旦被移除,使用['LSParseDateTime()'](http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-70e3.html)就像@Antony建議的那樣效率更高。與'LSDateFormat'不同,'LSParseDateTime'已經返回一個日期對象。所以你可以跳過'CreateDateTime'調用和隱式字符串/日期轉換。 – Leigh

+0

好的建議Leigh。在答案中加上這一點,這樣可以幫助未來的讀者。 –