ColdFusion: Как разобрать дату в формате dd / mm / yyyy? - PullRequest
3 голосов
/ 17 ноября 2010

Я обнаружил функцию ParseDateTime , но она анализирует только строку даты / времени в соответствии с соглашениями о региональных настройках английского языка (США).

Как разобрать дату в формате дд / мм / гггг?

Попробуйте это:

<cfset TestdateFrom = ParseDateTime("10/9/2010") />
<cfloop index="i" from="1" to="30" step="1">
    <cfset TestdateFrom = DateAdd( "d", 1, TestdateFrom ) />
    #TestdateFrom#<br/>
</cfloop>

В CF9 есть функция LSParseDateTime .

Я не знаю, поможет ли это мне или нет.

Наконец, я должен использовать библиотеку Java для этой проблемы?

Ответы [ 4 ]

6 голосов
/ 17 ноября 2010

Похоже, это работает:

<cfset formatter = createObject("java","java.text.SimpleDateFormat")>
<cfset formatter.init("dd/MM/yyyy")>
<cfset newDate = formatter.parse("10/09/2010")>
#newDate#

Любые другие предложения?

5 голосов
/ 17 ноября 2010

Если ваш формат соответствует, вы также можете сделать что-то вроде этого:

<cfset dy=listGetAt(dateString,1,"/")>
<cfset mo=listGetAt(dateString,2,"/")>
<cfset yr=listGetAt(dateString,3,"/")>

<cfset myDate=createDate(yr,mo,dy)>

Но, действительно, Ответ Тима самый лучший.

3 голосов
/ 17 ноября 2010

Мне удалось использовать этот метод для обработки дат (в формате Великобритании), введенных в виде произвольного текста:

<cfset SetLocale("English (UK)")>
<cfset valid = true>

<!--- Convert DD-MM-YYYY or DD.MM.YYYY to DD/MM/YYYY --->
<cfset dt = replacelist(dt, ".,-", "/,/")>

<!--- count date elememnts (must be 3 - LSParseDateTime will make potentially incorrect assumptions otherwise) --->
<cfif listlen(dt, "/") neq 3>
    <!--- wrong number of elements --->
    <cfset valid = false>
<cfelse>
    <!--- Correct number of elements so try to interpret as date/time object --->   
    <cftry>
        <cfset dt = LSParseDateTime(dt)> 
        <cfcatch type="Expression">
            <cfset valid = false>
        </cfcatch>
    </cftry>
</cfif>

Если значение true в конце этого, строковое представление даты в dt было преобразовано в объект даты / времени. Шаг замены списка позволяет ввести дату в формате ДД.ММ.ГГГГ или ДД-ММ-ГГГГ, а также ДД / ММ / ГГГГ.

2 голосов
/ 17 ноября 2010

Вам необходимо использовать lsParseDateTime ().Это специфичный для локали анализатор даты.

Вы можете либо передать языковой стандарт прямо во второй параметр функции, либо использовать setlocale (), чтобы установить его для запроса.

Возможно, вам будет полезно взглянуть на другойФункции с префиксом LS тоже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...