coldfusion - 使用 CreateODBCDateTime() 创建的对象的返回类型是什么?

标签 coldfusion coldfusion-10

假设我在 cfscript 中有以下函数......返回类型是什么?

[return type goes here] function GetODBCDateTime () {

    return CreateODBCDateTime (Now ());

}

提示:这不是 ODBCDateTime .

最佳答案

简答:看看documentation for cffunction ,显示了可用的返回类型。对于日期和时间对象,使用 date ,不是字符串。尽管除非有特定原因需要 CreateODBCDateTime,否则您可以简单地使用 Now()反而。在大多数情况下,两者是等效的。

更长的答案:

A date-time object, in ODBC timestamp format

which really means: a string in ODBC timestamp format.



不完全是。尽管它在表示为字符串时确实具有非常特定的格式,但 CreateODBCDateTime 仍然返回一个日期/时间对象。如果转储类信息,可以看到它实际上是java.util.Date的子类, 而不是 java.lang.String。
 // string representation
 writeDump(GetODBCDateTime().toString());
 // base class
 writeDump(GetODBCDateTime().getClass().name);
 // superclass
 writeDump(GetODBCDateTime().getClass().getSuperClass().name);

For example, I can call getClass().getSuperClass().name on the returned object and get java.util.Date, if the return type is either date or string!



你是对的,但这不应该发生 IMO。我不知道 CF 如何在内部处理返回类型,但是......听起来这可能是由于 CF 通常的 automagic-type-conversion工作中的规则 - 或 - 也许 CF 只是使用返回类型来验证对象可以转换为指定类型,如果是这样,则对象将“按原样”返回。但是,您仍然应该使用类型 date以确保该函数始终返回一个日期对象。否则,它可以返回任何它想要的东西,比如字符串“apple”而不是日期。

Dumping either returned object always gives a plain text string.



现在这就是我所期望的。当您 cfdump 任何对象时,CF 通常调用对象的 toString() 方法。顾名思义,它返回对象的字符串表示。使用 CreateODBCDateTime,toString() 旨在以非常特定的格式返回基础日期值 {ts 'yyyy-mm-dd HH:nn:ss'} .但是,在内部对象仍然是日期。然而,当转储时,它在视觉上与具有相同值的日期字符串相同。 (转储非常适合调试,但 they favor presentation over accuracy ,所以不要总是相信你看到的;-)。

关于coldfusion - 使用 CreateODBCDateTime() 创建的对象的返回类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35325284/

相关文章:

coldfusion - Coldfusion 循环的奇怪行为?

json - ColdFusion:如何检查JSON属性是否为null?

hibernate - ColdFusion 中的多个 Hibernate session ?

csv - Coldfusion CSV 到电子表格

node.js - 如何在 Node.js/Express 应用程序中编写全局操作代码?

java - 执行shell命令 `java.lang.ProcessBuilder`

php - 使用 ColdFusion 将 CSV 转换为多维数组

coldfusion - 应用程序范围的变量正在为每个请求刷新

coldfusion - CF10 websocket p2p 可以从 JavaScript 调用任何 CFC 中的任何公共(public)函数。这怎么不是安全风险?

rest - Coldfusion 10 REST - 500 内部服务器错误