2014-06-12 73 views
0

我是Coldfusion的新手。我試圖將「2014年6月11日,8:50 PM」的字符串更改爲「2014年6月11日」。我試圖用如何在Coldfusion中從日期+時間字符串中提取日期子字符串?

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

它給了我2014年如果我改變2比1,我得到君11.可有人請給我,如果有額外的一切之前,第二個「」一種方法一些建議嗎?非常感謝您的幫助。

回答

2

如果你能保證該字符串是三個逗號分隔的部分總是形成和日期始終是第一位二,那麼你可以這樣做:你應該永遠只用dateFormattedForOutput輸出

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

注意;如果您要存儲日期或操作日期,請使用date

+0

或者你可以這樣做...沒有考慮刪除一個項目,但這很聰明,特別是如果你以後沒有保留字符串/列表。 –

+0

除非我錯過了一些東西,否則前兩步都是必需的。 –

+0

簡單顯示值不太可能是整個需求,因此將其轉換爲日期對象是明智的。從那裏,一個*使用*任何的日期對象,包括格式輸出。我意識到第二步和第四步的價值是一樣的,但這與其他事情一樣重要。我在最後一句話中碰到了這個問題。 –

3

與字符串混淆並不困難,但由於您使用的是日期,因此可以使用日期函數。 如果你有一個字符串,做的最好的事情就是把它轉換成一個Date對象,使用

<cfset myDate = ParseDateTime(string)> 

然後,一旦它是一個Date對象,你可以做任何你想用它。使用Dateformat根據需要操作它。

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

ParseDateTime documentation here

DateFormat documentation here

編輯 - 使用字符串代替。

您可以使用LEFT來獲取字符串的左邊部分。要知道需要多少個字符,您需要找到第二個「,」逗號的位置。假設格式是一致的,第一個逗號應在不超過8個字符,所以我們在字符串中使用FIND找人「」開始位置8

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

然後我們使用左功能爲了得到角色,但我們不想要逗號,所以我們取1。

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

你可以做到這一切在線,但它有點混亂

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

嗨。我只是嘗試ParseDateTime(字符串),並得到一個錯誤:「2014年6月2日,6:20 PM是一個無效的日期或時間字符串。」你有什麼建議可能會造成這種情況? – user2203774

+0

對不起,我以前曾經用過這種類型的日期字符串格式,但我猜它不是它能識別的格式之一。我想我們可以訴諸字符串操縱......我會發布幾個選項,堅持下去。 –

+0

好的,編輯。希望有所幫助。皮膚有很多種方法來處理貓,但是當將日期作爲字符串處理時,嘗試並轉換它們,因爲那樣它就更容易做到任何你想要的東西。在這種情況下,字符串操作並不糟糕,左邊很簡單,這就是我使用的。你可以使用GetListAt 1和GetListAt2並修剪和合並它們......也就是你。我認爲左邊是非常可讀的......這是長期重要的。 –