使用特定格式返回JSON中的Date对象

时间:2016-06-21 01:51:09

标签: coldfusion coldfusion-11

我正在使用CF11和ORM以及服务层来返回ORM对象。我的Angular应用程序要求以下列两种格式之一返回JSON日期:

'yyyy/MM/dd' (i.e., '2014/08/25')
'yyyy/MM/dd HH:mm:ss' (i.e., '2014/08/25 16:35:10')

我的服务CFC将一个对象数组作为JSON字符串返回,但Coldfusion以字符串格式序列化日期,如下所示:April, 21 2016 04:45:56。这似乎是在引擎盖下调用的SerializeJson()函数的结果。

有没有办法让ORM CFC以特定的JSON字符串格式返回日期对象?作为一种解决方法,我创建了一个名为startTimeAsJson的新属性,该属性使用getter函数返回一个字符串。但我更愿意找到一种方法让CF只使用我想要的格式序列化日期对象。

这是我的ORM对象。

component persistent="true" table="course" accessors="true"  
{
    property name="startTime" column="start_time" type="date" ormtype="timestamp" notnull="false";
}

我的服务图层对象。

component output="false" hint="CFBuilder-Generated:test_date" 
{
  remote orm.course[] function getAllCourses(string SortColumn = "STARTDATE DESC")
    {
        return entityLoad("course", {}, arguments.sortcolumn);
    }
}

我的服务CFC返回的JSON示例。

[{"startTime":"May, 09 2016 08:25:24"}]

1 个答案:

答案 0 :(得分:0)

您可以使用CF的dateTimeFormat()在返回值之前格式化日期的方式吗? http://cfdocs.org/datetimeformat
有点像...

local.response = entityLoad("course", {}, arguments.sortcolumn);  
local.response = dateTimeFormat(local.response, "yyyy/mm/dd HH:nn:ss");  
return local.response;  

或者,在一行中:

return dateTimeFormat(entityLoad("course", {}, arguments.sortcolumn), "yyyy/mm/dd HH:nn:ss");