我使用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," "))
)>
是否还有其他函数来格式化这样的字符串。
请帮忙。提前谢谢。
答案 0 :(得分:3)
如果内置格式化函数不起作用,您可以深入查看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'}
答案 1 :(得分:1)
尝试使用正则表达式从时间字符串替换时区。这不是正确的方法。但是你可以通过这种方法找到解决方案。
<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#">
希望这有帮助。