我们收到的日期节点的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