以下函數以字符串形式返回兩個日期時間值之間的差異(以字符串形式)。它可以寫得更有效率/優雅嗎?這個日期時間函數可以寫得更有效嗎?
/**
* @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