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

String 从字符串中删除时区或在coldfusion中格式化HTTP时间字符串,string,time,coldfusion,coldfusion-9,coldfusion-10,String,Time,Coldfusion,Coldfusion 9,Coldfusion 10,我正在使用timeFormat()格式化包含11:00 PM或23: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#

我正在使用
timeFormat()
格式化包含
11:00 PM
23: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#">
有没有其他函数可以像这样格式化字符串


请帮忙。提前感谢。

如果内置的格式化函数不起作用,您可以使用java并使用该类


尝试使用正则表达式替换时间字符串中的时区。这不是正确的方法。但是你可以用这种方法找到解决办法

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


希望这有帮助。

注意时区。使用
zzz
会根据当前时区调整结果。这可能是可取的,也可能不是可取的。要忽略时区,请尝试
hh:mm aa
(注意,如果输入使用12小时时钟,请使用小写
hh
,而不是
hh
)。@Leigh Nice tip。为了避免混淆,我更新了面具,使用12小时时钟。否则,结果为上午10:00(10:00),而不是晚上10:00(22:00)。如上所述,它返回10点而不是11点的原因是时间是基于jvm的默认时区进行调整的。如果您想以不同的方式记录,请随意编辑。是的,这可以是另一种方式,但通过使用
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#">