从可用的日期列表中获取最小和最大日期

时间:2012-06-20 09:39:36

标签: coldfusion

我将日期列为以下格式的列表:

09-2012,10-2012,01-2013 

从列表中访问最短和最长日期的更好方法是什么?

4 个答案:

答案 0 :(得分:6)

我不确定哪个更快。这是我下面的列表解决方案,或者您可以将列表转换为数组并使用它。

这可以完成这项工作:

<CFSET dates = "" />
<CFLOOP list="09-2012,10-2012,01-2013" index="date">
    <CFSET dates = listappend(dates,DateFormat(createDate(listlast(date,"-"),listfirst(date,"-"),1), "yyyy-mm-dd")) />
</CFLOOP>
<CFSET dates = listsort(dates,"numeric") />
<CFSET min_date = listfirst(dates) />
<CFSET max_date = listlast(dates) />

答案 1 :(得分:5)

我建议将列表中的日期转换为yyyy-mm-dd。

然后您可以使用ListSort对列表进行排序,您将获得listfirst和listlast的第一个和最后一个日期

答案 2 :(得分:1)

与Seybsen的答案类似,只是沿着正则表达式的路径走下去:

<cfscript>
var data = "09-2012,10-2012,01-2013";
data = listSort( reReplace( data, '([0-9][0-9])-([0-9][0-9][0-9][0-9])', '\2-\1', 'all' ), 'numeric', 'asc' );
var minDate = listFirst( data );
var maxDate = listLast( data );
</cfscript>

答案 3 :(得分:0)

我调整了@ Seybsen的答案,在不查询查询的情况下查询查询的最大日期:

<cfset maxCompletedDate = ListLast(ListSort(ValueList(queryName.completedDate), "numeric")) />

如果其他人看到同样的事情,我想会把它放在那里,但再次,@Seybsen的信用。

BTW,格式化yyyy-mm-dd H:mm:ss的数据库中的日期。时间戳如2013-09-15 18:43:17