更新:
由於CF10 +,你可以使用自定義格式字符串,指示如何解析和輸入轉換成DateTime對象的功能:
// Custom format string
dateObject = parseDateTime("23 Nov 2013 00:53:12 +0000"
, "dd MMM yyyy HH:mm:ss zzz");
這是CF的靈活性和易用性可能成爲IMO缺點的一個領域。不幸的是parseDateTime
不允許你指定輸入字符串的格式,所以CF必須做很多猜測才能「自動」將字符串轉換爲日期對象。
CF使用的工具之一是java的SimpleDateFormat類,它利用模式將字符串解析或轉換爲Dates。我的理解是CF維護一個標準的日期/時間模式列表(根據美國約會)。您的第一個字符串不能與任何這些模式匹配。因此錯誤。
如果你的日期字符串總是在UTC,你可以簡單地使用列表功能,省略了時區,即+0000偏移,然後解析字符串像往常一樣:
<cfscript>
origString = "23 Nov 2013 00:53:12 +0000";
dateString = listFirst(origString, "+");
WriteDump(parseDateTime(dateString));
</cfscript>
或者你也可以DIY使用的SimpleDateFormat和適當的模式dd MMM yyyy HH:mm:ss Z
(見Date and Time Patterns)。只要注意返回的日期是在本地時間,所以你可能需要使用DateConvert如果你想UTC時間:
// get formatter based on default locale
formatter = createObject("java", "java.text.SimpleDateFormat").init();
// set up pattern for input date string
formatter.applyPattern("dd MMM yyyy HH:mm:ss Z");
// parse it into a date object
dateObject = formatter.parse("23 Nov 2013 00:53:12 +0000");
// display result in local and UTC time
WriteDump("local="& dateObject);
WriteDump("utc="& DateConvert("local2UTC", dateObject));
你是如何接收擺在首位這一信息?表單提交? –