2016-02-10 58 views

回答

4

簡答:查看documentation for cffunction,其中顯示了可用的返回類型。對於日期和時間對象,使用date,而不是字符串。儘管除非有特定原因需要CreateODBCDateTime,否則您可以簡單地使用Now()。對於大多數的目的這兩個是等效的。

再回應:

一個日期時間對象,在ODBC時間戳格式

其真正含義是:在ODBC時間戳格式的字符串。

不完全是。雖然代表作爲字符串,但確實具有非常特定的格式,但CreateODBCDateTime仍會返回日期/時間對象。如果轉儲類信息,則可以看到它實際上是java.util.Date的一個子類,而不是java.lang.String。

// string representation 
writeDump(GetODBCDateTime().toString()); 
// base class 
writeDump(GetODBCDateTime().getClass().name); 
// superclass 
writeDump(GetODBCDateTime().getClass().getSuperClass().name); 

例如,我可以調用的getClass()。getSuperclass之()名返回的對象,並得到java.util.Date,如果返回類型是日期或字符串!

你是對的,但不應該發生IMO。我不知道CF如何處理內部的返回類型,但是......這聽起來像這或者是由於CF的工作通常automagic-type-conversion規則 - 或 - 也許CF簡單地使用返回類型,以驗證對象可以轉換爲指定的類型,如果是,則該對象按「原樣」返回。但是,您還是應該使用類型date確保功能總是返回日期對象。否則,它可能會返回任何想要的內容,比如字符串「apple」而不是日期。

要麼將​​傾倒返回的對象總是給人一種純文本字符串。

現在,我所期望的。當你cfdump任何對象時,CF通常會調用該對象的toString()方法。顧名思義,它返回對象的字符串表示形式。使用CreateODBCDateTime,toString()旨在以一種非常特定的格式{ts 'yyyy-mm-dd HH:nn:ss'}返回基礎日期值。但是,內部對象仍然是日期。然而,當轉儲時,它在視覺上與具有相同值的日期字符串相同。 (轉儲非常適合調試,但they favor presentation over accuracy,所以不要總是相信你看到的;-)。

+0

謝謝你一個深思熟慮的答案。無論我將返回類型設置爲'string'還是'date',實際返回的東西似乎都可能具有相同的屬性。例如,如果返回類型是'date'或'string',我可以在返回的對象上調用'getClass()。getSuperClass()。name'並獲得'java.util.Date'!轉儲返回的對象總是給出一個純文本字符串。 – user3071284

0

documentation看起來像一個以ODBC時間戳格式構造的DateTime。

+0

對不起,'DateTime'不起作用。 – user3071284

+0

可能是字符串還是數字表示?將日期/時間對象作爲字符串傳遞時,請用引號括起來。否則,它將被解釋爲日期/時間對象的數字表示形式._ from http://help.adobe.com/zh_CN/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7ff4.html – Chara

+0

我注意到了,但感謝您採取你有時間嘗試和幫助。 – user3071284

0

正確的答案是string。我想記住字符串在ColdFusion(和Java)中被視爲對象是很重要的。從文檔中,CreateODBCDateTime()返回類型是:

一個日期,時間對象,在ODBC時間戳格式。

其可以是在ODBC時間戳格式,在這種情況下。

相關問題