如何从Coldfusion中的日期+时间字符串中提取日期子字符串?

时间:2014-06-12 21:12:27

标签: coldfusion coldfusion-8

我是Coldfusion的新手。我试图更改一个类似于" 2014年6月11日,晚上8:50"到" 2014年6月11日"。我试着用

<cfset album[currentrow]['date'] = ListGetAt(album[currentrow]['date'], 2, ",")>

它给了我2014.如果我改变2比1,我得到6月11日。有人可以给我一些建议,如果有方法在第二个&#34;,&#34; ?非常感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

使用字符串混乱并不困难,但由于您正在处理日期,因此请使用日期函数。 如果你有一个字符串,最好的办法是使用

将其转换为Date对象
<cfset myDate = ParseDateTime(string)>

然后,一旦它成为日期对象,您就可以随心所欲地做任何事情。使用Dateformat根据需要对其进行操作。

<cfoutput>#dateformat(myDate, "mmm dd, yyyy")#</cfoutput>

ParseDateTime documentation here

DateFormat documentation here

编辑 - 改为使用字符串。

您可以使用LEFT获取字符串的左侧部分。要知道你想要多少个字符,你需要找到第二个字符的位置&#34;,&#34;逗号。假设格式一致,第一个逗号不应超过8个字符,因此我们使用FIND查找&#34;,&#34;在字符串中,从第8位开始。

<cfset theLoc = find(",", album[currentrow]['date'], 8) >

然后我们使用left函数来获取字符,但是我们不想要逗号,所以我们从中获取1。

<cfset theDate = left( album[currentrow]['date'], theLoc- 1 )>
<cfoutput>#theDate#</cfoutput>

你可以全部内联,但它有点麻烦

<cfset theDate = left( album[currentrow]['date'], find(",", album[currentrow]['date'], 8)- 1 )>

答案 1 :(得分:2)

如果你可以保证字符串总是由三个以逗号分隔的部分组成,并且日期总是前两个,那么你可以这样做:

dateTimeString = "Jun 2, 2014, 6:20 PM";
dateString = listDeleteAt(dateTimeString, 3);
date = parseDateTime(dateString);
dateFormattedForOutput = dateFormat(date, "mmm d, yyyy");

请注意,您应该只使用dateFormattedForOutput作为输出;如果您要存储日期或操纵日期,请使用date

相关问题