以下函数以字符串形式返回两个日期时间值之间的差异(以字符串形式)。它可以写得更有效率/优雅吗?这个日期时间函数可以写得更有效吗?
/**
* @hint Returns the difference between two time strings in words.
*/
public string function timeAgoInWords(required date fromTime, date toTime=now())
{
local.secondDiff = dateDiff("s", arguments.fromTime, arguments.toTime);
if (local.secondDiff <= 60)
return "#local.secondDiff# seconds ago";
local.minuteDiff = dateDiff("n", arguments.fromTime, arguments.toTime);
if (local.minuteDiff <= 60)
if (local.minuteDiff < 2)
return "1 minute ago";
else return "#local.minuteDiff# minutes ago";
if (local.minuteDiff <= 1440)
if (local.minuteDiff <= 120)
return "1 hour ago";
else return "#int(local.minuteDiff/60)# hours ago";
if (local.minuteDiff <= 2880)
return "yesterday";
if (local.minuteDiff <= 4320)
return "2 days ago";
local.monthDiff = dateDiff("m", arguments.fromTime, arguments.toTime);
if (local.monthDiff <= 12)
return "#dateFormat(arguments.fromTime, "mmm dd")# at #timeFormat(arguments.fromTime, "h:mm")#";
return "#dateFormat(arguments.fromTime, "mmm dd 'yy")# at #timeFormat(arguments.fromTime, "h:mm")#";
}
我不知道,如果它的效率更高,但是已经有人写了一个UDF,这是否非常的事:http://cflib.org/udf/ago – ale 2011-05-24 16:44:27
@Al,谢谢......它看起来但是用一个循环来怪异......按照我写的内容写一些东西不是更有意义吗?循环中的价值是什么? – Mohamad 2011-05-24 16:57:56
哦顺便说一句,默认情况下你根本不需要@hint。 – Henry 2011-05-24 21:22:40