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

如何从日期+;中提取日期子字符串;Coldfusion中的时间字符串?,coldfusion,coldfusion-8,Coldfusion,Coldfusion 8,我是Coldfusion的新手。我正在尝试将一个看起来像“Jun 11,2014,8:50 PM”的字符串更改为“Jun 11,2014”。我试着用 <cfset album[currentrow]['date'] = ListGetAt(album[currentrow]['date'], 2, ",")> 它给了我2014年。如果我把2改成1,我会得到6月11日。有没有人能给我一些建议,在第二个“,”之前是否有额外的方法?非常感谢你的帮助 处理字符串并不困难,但既然您正在处

我是Coldfusion的新手。我正在尝试将一个看起来像“Jun 11,2014,8:50 PM”的字符串更改为“Jun 11,2014”。我试着用

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


它给了我2014年。如果我把2改成1,我会得到6月11日。有没有人能给我一些建议,在第二个“,”之前是否有额外的方法?非常感谢你的帮助

处理字符串并不困难,但既然您正在处理日期,就让我们使用日期函数。 如果您有一个字符串,最好的方法是使用

<cfset myDate = ParseDateTime(string)>

一旦它是一个日期对象,你就可以用它做任何你想做的事情。根据需要使用Dateformat对其进行操作

<cfoutput>#dateformat(myDate, "mmm dd, yyyy")#</cfoutput>
日期格式(myDate,“mmm dd,yyyy”)#

编辑-改为使用字符串

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

<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 )>

处理字符串并不困难,但既然您正在处理日期,就让我们使用日期函数。 如果您有一个字符串,最好的方法是使用

<cfset myDate = ParseDateTime(string)>

一旦它是一个日期对象,你就可以用它做任何你想做的事情。根据需要使用Dateformat对其进行操作

<cfoutput>#dateformat(myDate, "mmm dd, yyyy")#</cfoutput>
日期格式(myDate,“mmm dd,yyyy”)#

编辑-改为使用字符串

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

<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 )>

如果可以保证字符串始终由三个逗号分隔的部分组成,并且日期始终是前两个部分,则可以执行以下操作:

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

请注意,您应该只使用
dateFormattedForOutput
进行输出;如果要存储或处理日期,请使用
date

如果可以保证字符串始终由三个逗号分隔的部分组成,并且日期始终是前两个部分,则可以执行以下操作:

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

请注意,您应该只使用
dateFormattedForOutput
进行输出;如果要存储或处理日期,请使用
date

Hi。我刚刚尝试了ParseDateTime(字符串),但出现了一个错误:“2014年6月2日,下午6:20是无效的日期或时间字符串。”您对可能导致这种情况的原因有什么建议吗?对不起,我以为我以前使用过这种类型的日期字符串格式,但我猜它不是它所识别的格式之一。我想我们可以求助于字符串操纵。。。我会发布几个选项,等等。好的,编辑。希望有帮助。有很多方法可以剥猫皮,但是当把日期作为字符串处理时,试着把它们转换成字符串,因为这样做你想用它们做什么就容易多了。在本例中,字符串操作不错,left很简单,这就是我使用的。您可以使用GetListAt 1和GetListAt 2,并对它们进行修剪和组合。。。由你决定。我觉得左边很可读。。。从长远来看,这很重要。我刚刚尝试了ParseDateTime(字符串),但出现了一个错误:“2014年6月2日,下午6:20是无效的日期或时间字符串。”您对可能导致这种情况的原因有什么建议吗?对不起,我以为我以前使用过这种类型的日期字符串格式,但我猜它不是它所识别的格式之一。我想我们可以求助于字符串操纵。。。我会发布几个选项,等等。好的,编辑。希望有帮助。有很多方法可以剥猫皮,但是当把日期作为字符串处理时,试着把它们转换成字符串,因为这样做你想用它们做什么就容易多了。在本例中,字符串操作不错,left很简单,这就是我使用的。您可以使用GetListAt 1和GetListAt 2,并对它们进行修剪和组合。。。由你决定。我觉得左边很可读。。。从长远来看,这是很重要的。或者你可以这样做。。。我没有考虑删除一个项目,但这很聪明,特别是如果你以后不保留字符串/列表的话。除非我遗漏了什么,前两个步骤是所有必要的。不可能仅仅显示值就是全部要求,所以将其转换为日期对象是明智的。从这里开始,我们使用date对象来表示[whatever],包括输出格式。我意识到第二步和第四步的值是相同的,但这和其他任何事情一样都是巧合。我在最后一句话中有点提到这个。或者你也可以这么做。。。我没有考虑删除一个项目,但这很聪明,特别是如果你以后不保留字符串/列表的话。除非我遗漏了什么,前两个步骤是所有必要的。不可能仅仅显示值就是全部要求,所以将其转换为日期对象是明智的。从这里开始,我们使用date对象来表示[whatever],包括输出格式。我意识到第二步和第四步的值是相同的,但这和其他任何事情一样都是巧合。我在最后一句话中稍微提到了这一点。