更新:
由于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));
你是如何接收摆在首位这一信息?表单提交? –