說我在cfscript中有以下功能...返回類型是什麼?用CreateODBCDateTime()創建的對象的返回類型是什麼?
[return type goes here] function GetODBCDateTime() {
return CreateODBCDateTime (Now());
}
提示:這不是ODBCDateTime
。
說我在cfscript中有以下功能...返回類型是什麼?用CreateODBCDateTime()創建的對象的返回類型是什麼?
[return type goes here] function GetODBCDateTime() {
return CreateODBCDateTime (Now());
}
提示:這不是ODBCDateTime
。
簡答:查看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,所以不要總是相信你看到的;-)。
從documentation看起來像一個以ODBC時間戳格式構造的DateTime。
對不起,'DateTime'不起作用。 – user3071284
可能是字符串還是數字表示?將日期/時間對象作爲字符串傳遞時,請用引號括起來。否則,它將被解釋爲日期/時間對象的數字表示形式._ from http://help.adobe.com/zh_CN/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7ff4.html – Chara
我注意到了,但感謝您採取你有時間嘗試和幫助。 – user3071284
正確的答案是string
。我想記住字符串在ColdFusion(和Java)中被視爲對象是很重要的。從文檔中,CreateODBCDateTime()
返回類型是:
一個日期,時間對象,在ODBC時間戳格式。
其可以是串在ODBC時間戳格式,在這種情況下。
謝謝你一個深思熟慮的答案。無論我將返回類型設置爲'string'還是'date',實際返回的東西似乎都可能具有相同的屬性。例如,如果返回類型是'date'或'string',我可以在返回的對象上調用'getClass()。getSuperClass()。name'並獲得'java.util.Date'!轉儲返回的對象總是給出一個純文本字符串。 – user3071284