Fuzzy time
Inspired by a couple of posts online I created a ColdFusion tag that will convert time differences into an English phrase. IE, if the originating date is 21 days ago, it will read "three weeks ago". It's a bit fuzzy as it uses broad defintions of how long ago the original date is. I've also submitted to cflib. Enjoy:
<cffunction name="timeAgo" description="Converts date and time differences into English descriptions">
<cfargument name="timeThen" required="true">
<cfargument name="timeNow" required="false" default="#now()#">
<cfset var secondsSince = DateDiff("S",arguments.timeThen,arguments.timeNow)>
<cfset var minutesSince = DateDiff("N",arguments.timeThen,arguments.timeNow)>
<cfset var hoursSince = DateDiff("H",arguments.timeThen,arguments.timeNow)>
<cfset var daysSince = DateDiff("D",arguments.timeThen,arguments.timeNow)>
<cfset var monthsSince = DateDiff("M",arguments.timeThen,arguments.timeNow)>
<cfset var yearsSince = DateDiff("YYYY",arguments.timeThen,arguments.timeNow)>
<cfif secondsSince lt 60>
<cfreturn "just now">
<cfelseif minutesSince lt 2>
<cfreturn "one minute ago">
<cfelseif minutesSince lt 60>
<cfreturn minutesSince & " minutes ago">
<cfelseif minutesSince lt 120>
<cfreturn "one hour ago">
<cfelseif hoursSince lt 24>
<cfreturn hoursSince & " hours ago">
<cfelseif daysSince eq 1>
<cfreturn "yesterday">
<cfelseif daysSince lt 7>
<cfreturn daysSince & " days ago">
<cfelseif daysSince lt 14>
<cfreturn "last week">
<cfelseif daysSince lt 21>
<cfreturn "two weeks ago">
<cfelseif daysSince lt 28>
<cfreturn "three weeks ago">
<cfelseif daysSince lt 60>
<cfreturn "last month">
<cfelseif daysSince lt 365>
<cfreturn monthsSince & " months ago">
<cfelseif daysSince lt 730>
<cfreturn "last year">
<cfelse>
<cfreturn yearsSince & " years ago">
</cfif>
</cffunction>
About this entry
You're currently reading "Fuzzy time", an entry on hofo.com
- Published:
- Apr 29, 2008 / 2:07 PM
- Category:
- Coldfusion
No comments