Update:
По CF10 +, вы можете использовать строку пользовательского формата для указания функции о том, как анализировать и преобразовывать входные данные в даты и времени объекта:
// Custom format string
dateObject = parseDateTime("23 Nov 2013 00:53:12 +0000"
, "dd MMM yyyy HH:mm:ss zzz");
Это одна из областей, в которой гибкость и простота использования CF могут быть недостатком ИМО. К сожалению, 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));
Как вы получать эту информацию в первую очередь? Форма представления? –