Относительные даты в ColdFusion

Поиск функции как это в ColdFusion, разрешение мне показать даты "10 минут назад" или "2 дня назад" или "месяц назад".

14
задан Larsenal 20 April 2010 в 23:09
поделиться

2 ответа

Хотя принципиально не отличается от udf, мне нравится подход этого парня . Не очень хорошо протестирован, но вы также можете сделать что-то вроде этого:

Edit Вы не упомянули версию, поэтому я предположил CF8

<cffunction name="relativeDate" returnType="string" access="public" output="false">
    <cfargument name="theDate" type="date">
    <cfset var x        = "" />
    <cfset var diff  = "" />    
    <cfset var result   = "unknown" />    
    <cfset var dateNow  = now() />
    <cfset var codes    = [ "yyyy", "m", "ww", "d", "h", "n", "s" ] />
    <cfset var names    = [ "year", "month", "week", "day", "hour", "minute", "second" ] />

    <cfif dateCompare(arguments.theDate, now()) gt 0>
        <!--- replace with other code to handle future dates ....--->
        <cfthrow message="Future date handling not implemented">
    </cfif>

    <!--- check each date period  ...--->
    <cfloop from="1" to="#arrayLen(codes)#" index="x">
        <cfset diff = abs( dateDiff(codes[x], arguments.theDate, dateNow) ) />
        <!--- this is the greatest date period --->
        <cfif diff gt 0 >
            <cfif diff  gt 1>
                <cfset result = "about "& diff &" "& names[x] &"s ago" />
            <cfelseif names[x] eq "hour">
                <cfset result = "about an "& names[x] &" ago" />
            <cfelse>
                <cfset result = "about a "& names[x] &" ago" />
            </cfif>

            <cfbreak>
        </cfif>
    </cfloop>    

    <cfreturn result />
</cffunction>
10
ответ дан 1 December 2019 в 14:11
поделиться

Вы можете попробовать этот udf-файл с cflib.org: http://cflib.org/udf/ago

5
ответ дан 1 December 2019 в 14:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: