从字符串中删除时区或在 coldfusion 中格式化 HTTP TIME STRING

Remove time zones from a string or format HTTP TIME STRING in coldfusion

我正在使用 timeFormat() 格式化包含 11:00 PM23:00:00 的普通字符串,如下所示:

<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 PM 23:00:00

但在一种情况下,我遇到了一个时间字符串,其中还包含这样一个时区:11:00 PM EDT,所以当我尝试使用 timeFormat 格式化此字符串时,我遇到了错误哪个是正确的。

11:00 PM EDT is an invalid date or time string

这种类型的字符串可以使用GetHttpTimeString生成。

我需要使用这样的东西吗?这不是正确的方法。只是认为这没有找到其他解决方案。

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

是否有任何其他函数可以像这样格式化字符串。

请帮忙。提前致谢。

如果内置格式化功能不起作用,您可以向下搜索 java 并使用 SimpleDateFormat class.

// "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#">

希望对您有所帮助。