Удалите часовые пояса из строки или отформатируйте 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#">
Надеюсь это поможет.