DateDiff_En

Calculates the differences of date (against NOW) and return in English descriptive.
Like Last week, 3 months ago, next year, etc.
I used this one a lot in my websites and cannot believe that I have not included yet here. My bad.

CodeFunctionName
What is this?

Public

Tested

Original Work
Function DateDiff_En(OfDate)
    Rett                         = "Same"
    D1                         = Now()
    IsFuture                 = Sgn(D1 - OfDate) < 0
    IsPast                     = Sgn(D1 - OfDate) > 0
    WeekDays_En                = "Sunday||Monday||Tuesday||Wednesday||Thursday||Friday||Saturday"
   
    DateDiff_En                = Rett
    If Not IsPast And Not IsFuture Then Exit Function
    If IsPast Then
        YearsAway             = DateDiff("yyyy", OfDate, D1)
        MonthsAway             = DateDiff("m", OfDate, D1)
        WeeksAway             = DateDiff("ww", OfDate, D1)
        DaysAway             = DateDiff("d", OfDate, D1)
        HoursAway             = DateDiff("h", OfDate, D1)
        MinutesAway         = DateDiff("n", OfDate, D1)
        Rett                    = CInt(YearsAway) & " years ago"
        If YearsAway < 2 Then         Rett = "last year"
        If YearsAway < 1 Then         Rett = CInt(MonthsAway) & " months ago"
        ' If MonthsAway < 2 Then     Rett = "last month"
        If MonthsAway < 2 Then         Rett = WeeksAway & " weeks ago"
        If WeeksAway < 4 Then         Rett = CInt(DaysAway) & " days ago"
        If DaysAway > 30 Then         Rett = "last month"
'    If WeeksAway < 2 Then         Rett = "last week"
        If DaysAway < 14 Then         Rett = "last week"
        If DaysAway < 7 Then         Rett = CutString3(WeekDays_En,Weekday(OfDate),"||")
        If DaysAway < 2 Then         Rett = "yesterday"
        If DaysAway < 1 Then         Rett = CInt(HoursAway) & " hours ago"
        ' If HoursAway < 24 Then     Rett = CInt(HoursAway) & " hours ago"
        If HoursAway < 14 Then         Rett = CInt(HoursAway) & " hours ago"
        If HoursAway < 2 Then         Rett = "an hour ago"
        If HoursAway < 1 Then         Rett = MinutesAway & " minutes ago"
        If MinutesAway < 60 Then     Rett = MinutesAway & " minutes ago"
        If MinutesAway < 2 Then     Rett = "a minute or so ago"
    ElseIf IsFuture Then
        YearsAway             = DateDiff("yyyy", D1, OfDate)
        MonthsAway             = DateDiff("m", D1, OfDate)
        DaysAway             = DateDiff("d", D1, OfDate)
        HoursAway             = DateDiff("h", D1, OfDate)
        MinutesAway         = DateDiff("n", D1, OfDate)
        Rett                    = "in " & CInt(YearsAway) & " years"
        If YearsAway < 2 Then         Rett = "next year"
        If YearsAway < 1 Then         Rett = "in " & CInt(MonthsAway) & " months"
        If MonthsAway < 2 Then         Rett = "next month"
        If MonthsAway < 1 Then         Rett = "in " & CInt(DaysAway) & " days"
'        If WeeksAway < 2 Then         Rett = "next week"
        If DaysAway < 2 Then         Rett = "tomorrow"
        If DaysAway < 1 Then         Rett = "in " & CInt(HoursAway) & " hours"
        If HoursAway < 2 Then         Rett = "in an hour"
        If HoursAway < 1 Then         Rett = "in " & CInt(MinutesAway) & " minutes"
        If MinutesAway < 2 Then     Rett = "in a minute or so"
        If MinutesAway < 1 Then     Rett = "in " & CInt(SecondsAway) & " seconds"
        If SecondsAway < 10 Then     Rett = "in few seconds"
    End If
    DateDiff_En                = Rett
End Function

OfDate

Views 92

Downloads 28

CodeID
DB ID