Преобразование даты / времени ColdFusion

Я работаю со сценарием, который отображает дату и время в формате ISO 8601 следующим образом:2012-05-17T17:35:44.000Z.

но я хотел бы, чтобы он отображался в обычном формате временной метки ColdFusion при использовании#Now()# обозначение ... так в этом формате:{ts '2012-05-17 17:35:44'}

Как я могу это сделать?

 slezica18 мая 2012 г., 00:50
Ха! Я думал, что название гласит «путаница»
 Leigh18 мая 2012 г., 04:59
Неудивительно. Все, что вы читали с ног на голову, запутало вас;)

Ответы на вопрос(5)

использованиеcr,eateOdbcDate функция. Лучше всего сравнивать в запросе.

<cfquery name="GetVisits" >
    SELECT v.ExecutiveID, eu.firstname, eu.lastname from Visits where
v.visitDate between #CreateODBCDate(DateFrom)#
        AND  #CreateODBCDate(DateTo)#
</cfquery>
 17 февр. 2013 г., 22:59
CreateODBCDate не может разобрать строку2012-05-17T17:35:44.000Z, Не говоря уже о том, что возвращается только дата, а не датаand время {ts '2012-05-17 17: 35: 44'}

Начиная с CF 10, ISO-8601 поддерживается напрямуюparseDateTime.

<cfset string = "1997-07-16T19:20:30+01:00">
<cfset date = parseDateTime(string, "yyyy-MM-dd'T'HH:mm:ssX")>

Пример запуска на TryCF.com

Эта строка даты в формате ISO, есть хороший пример того, как преобразовать ее в объект даты CFВот:

...
<cfreturn ARGUMENTS.Date.ReplaceFirst(
    "^.*?(\d{4})-?(\d{2})-?(\d{2})T([\d:]+).*$",
    "$1-$2-$3 $4"
    ) />
 18 мая 2012 г., 15:47
Ответы, которые являются просто ссылками, не являются ответами. Пожалуйста, по крайней мере, предоставьте краткое изложение того, что там будет найдено. Смотрите также:meta.stackexchange.com/questions/8231/…

Я думаю, что это более полное и элегантное решение:

        <cffunction name="ConvertISOToDateTime" access="private" returntype="date">
    <cfargument name="ISODateString" required="yes" type="string" hint="Properly formed ISO-8601 dateTime String">
    <cfscript>
        // time formats have 2 ways of showing themselves: 1994-11-05T13:15:30Z UTC format OR 1994-11-05T08:15:30-05:00
        local.initial_date = parseDateTime(REReplace(ISODateString, "(\d{4})-?(\d{2})-?(\d{2})T([\d:]+).*", "\1-\2-\3 \4"));
        // If not in UTC format then we need to
        if (right(arguments.ISODateString, 1) neq "Z") {
            local.timeModifier = "";
            //Now we determine if we are adding or deleting the the time modifier.
            if (ISODateString contains '+' and listlen(listrest(ISODateString,"+"),":") eq 2){
                local.timeModifier = listrest(ISODateString,"+");
                local.multiplier = 1; // Add
            } else if (listlen(listlast(ISODateString,"-"),":") eq 2) {
                local.timeModifier = listlast(ISODateString,"-");
                local.multiplier = -1; // Delete
            }
            if (len(local.timeModifier)){
                local.initial_date = dateAdd("h", val(listfirst(local.timeModifier,":"))*local.multiplier,local.initial_date);
                local.initial_date =  dateAdd("m", val(listlast(local.timeModifier,":"))*local.multiplier,local.initial_date);
            }
        }
        return local.initial_date;
    </cfscript>
</cffunction>

Уверен, что только анализ и вывод приведут его в нужном вам формате:

#parseDateTime(REReplace("2012-05-17T17:35:44.000Z", "(\d{4})-?(\d{2})-?(\d{2})T([\d:]+).*", "\1-\2-\3 \4"))#

Редактировать: Исправлено и проверено. ;)

 08 июн. 2012 г., 19:03
Лол, намного лучше Даты ISO заставляют мою голову болеть;) К вашему сведению, если вам нужен часовой пояс, посмотритеConvertIsoToDateTime функцияin the comments here
 08 июн. 2012 г., 18:40
Хорошо, исправлено и проверено ... только для вас, Ли, лол :)
 08 июн. 2012 г., 18:27
Нет, я думаю, тебе нужно что-то вродеcflib.org/index.cfm?event=page.udfbyid&udfid=1129 , Хотя вы можете адаптировать udf, так как он игнорирует a) секунды и b) часовой пояс,

Ваш ответ на вопрос