我将日期列为以下格式的列表:
09-2012,10-2012,01-2013
从列表中访问最短和最长日期的更好方法是什么?
答案 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