Удалите часовые пояса из строки или отформатируйте HTTP TIME STRING в Coldfusion

Я форматирую нормальную строку, содержащую 11:00 PM или же 23:00:00 с помощью timeFormat() как это:

<cfset local.timeString = "11:00 PM">
<cfdump var="#local.timeString#">
<cfset local.newTimeString = timeFormat(local.timeString, "HH:mm:ss")>
<cfdump var="#local.newTimeString#">

Выход:

11:00 вечера 23:00:00

Но в одном случае я наткнулся на строку времени, которая также содержит часовой пояс, подобный этому: 11:00 PM EDTпоэтому, когда я пытался отформатировать эту строку с помощью timeFormat тогда я получаю ошибку, которая является правильной.

11:00 вечера EDT является недопустимой строкой даты или времени

Этот тип строки может быть сгенерирован с помощью GetHttpTimeString.

Нужно ли использовать что-то подобное? Это не правильный путь. Просто подумал, что другого решения не нашел.

<cfset local.newTimeString = left(local.timeString
                                , len(local.timeString) - len(listLast(local.timeString," "))
                                )>

Есть ли другая функция для форматирования строки, как это.

Пожалуйста помоги. Заранее спасибо.

2 ответа

Решение

Если встроенные функции форматирования не работают, вы можете перейти к Java и использовать класс SimpleDateFormat.

// "hh" - 12 hour clock, "HH" - 24 hour clock
sdf = CreateObject("java","java.text.SimpleDateFormat").init("hh:mm aa zzz");
testdate = "11:00 PM EDT";
writeDump(sdf.parse(testdate));  // returns {ts '1970-01-01 22:00:00'}

Попробуйте использовать регулярное выражение для замены часового пояса из строки времени. Это не правильно. Но вы можете найти решение с помощью этого метода.

<cfset local.timeString = "11:00 PM EDT">
<cfset local.newTimeStringArray  = REMatch("((?:(?:[0-1][0-9])|(?:[2][0-3])|(?:[0-9])):(?:[0-5][0-9])(?::[0-5][0-9])?(?:\s?(?:am|AM|pm|PM)))",local.timeString) />
<cfdump var="#local.newTimeStringArray[1]#">
<cfset local.newTimeString = timeFormat(local.newTimeStringArray[1], "HH:mm:ss")>
<cfdump var="#local.newTimeString#">

Надеюсь это поможет.

Другие вопросы по тегам