Относительная дата / время для классического ASP - PullRequest
1 голос
/ 31 марта 2009

Есть ли у кого-нибудь относительная дата / время с настоящего момента для обычного / человека для классической функции ASP в VBScript? Это похоже на Twitter.

Примеры:

  • Менее 1 минуты назад
  • около 5 минут назад
  • около часа назад
  • около 3 часов назад
  • Вчера
  • Среда
  • и т.д.

Ответы [ 4 ]

3 голосов
/ 06 апреля 2009

Это тот, который я использую. Совершенно уверен, что я просто извлек это из примера Джеффа, который он использовал для этого сайта.

Да, да, я сделал: Как рассчитать относительное время в C #?

Function RelativeTime(dt)
    Dim t_SECOND : t_SECOND = 1
    Dim t_MINUTE : t_MINUTE = 60 * t_SECOND
    Dim t_HOUR : t_HOUR = 60 * t_MINUTE
    Dim t_DAY : t_DAY = 24 * t_HOUR
    Dim t_MONTH : t_MONTH = 30 * t_DAY

    Dim delta : delta = DateDiff("s", dt, Now)

    Dim strTime : strTime = ""
    If (delta < 1 * t_MINUTE) Then
        If delta = 0 Then
            strTime = "just now"
        ElseIf delta = 1 Then
            strTime = "one second ago"
        Else
            strTime = delta & " seconds ago"
        End If
    ElseIf (delta < 2 * t_MINUTE) Then
      strTime = "a minute ago"
    ElseIf (delta < 50 * t_MINUTE) Then
      strTime = Max(Round(delta / t_MINUTE), 2) & " minutes ago"
    ElseIf (delta < 90 * t_MINUTE) Then
      strTime = "an hour ago"
    ElseIf (delta < 24 * t_HOUR) Then
      strTime = Round(delta / t_HOUR) & " hours ago"
    ElseIf (delta < 48 * t_HOUR) Then
      strTime = "yesterday"
    ElseIf (delta < 30 * t_DAY) Then
     strTime = Round(delta / t_DAY) & " days ago"
    ElseIf (delta < 12 * t_MONTH) Then
        Dim months
        months = Round(delta / t_MONTH)
        If months <= 1 Then
            strTime = "one month ago"
        Else
            strTime = months & " months ago"
        End If
    Else
        Dim years : years = Round((delta / t_DAY) / 365)
        If years <= 1 Then
            strTime = "one year ago"
        Else
            strTime = years & " years ago"
        End If
    End If
    RelativeTime = strTime
End Function
0 голосов
/ 28 сентября 2009

Я пишу свою собственную функцию, как это, можно найти на http://asp.web.id/asp-classic-relative-date-function.html

используется преобразование даты asp в формат unixtimestamp и вычисление временного запаса. это можно настроить, вы также можете создать относительную дату для предстоящей даты, используя эту функцию.

0 голосов
/ 08 апреля 2009

взято из ajaxed

'here comes some global helpers...
public function sayDate(dat, mode, relativNotation)
    if not isDate(dat) then
        sayDate = "unknown"
        exit function
    end if
    if relativNotation then
        diff = dateDiff("s", dat, now())
        if diff <= 10 and diff >= 0 then
            sayDate = "Just now" : exit function
        elseif diff < 60 and diff >= 0 then
            sayDate = diff & " seconds ago" : exit function
        elseif diff = 60 and diff >= 0 then
            sayDate = diff & " minute ago" : exit function
        elseif diff <= 1800 and diff >= 0 then
            sayDate = int(diff / 60) & " minutes ago" : exit function
        elseif diff < 86400 and diff >= 0 then
            sayDate = plural(int(diff / 60 / 60), "hour", empty) & " ago"
        else
            if datevalue(dat) = date() then
                sayDate = "Today"
            elseif dateValue(dat) = dateAdd("d", 1, date()) then
                sayDate = "Tomorrow"
            elseif dateValue(dat) = dateAdd("d", -1, date()) then
                sayDate = "Yesterday"
            end if
        end if
    end if
    if relativNotation and lCase(mode) = "datetime" and isEmpty(sayDate) then
        diff = dateDiff("d", dat, now())
        sayDate = plural(diff, "day", empty) & " ago"
        exit function
    end if

    if isEmpty(sayDate) then
        sayDate = day(dat) & ". " & monthname(month(dat), true)
        if year(dat) <> year(now()) then sayDate = sayDate & " " & year(dat)
    end if

    if lCase(mode) <> "datetime" then exit function
    if uBound(split(dat, " ")) <= 0 then exit function
    'sayDate = sayDate & ", " & str.padLeft(hour(dat), 2, "0") & ":" & str.padLeft(minute(dat), 2, "0")
end function

public function plural(val, singularform, pluralform)
    plural = singularform
    if val <> 1 then plural = pluralform
    if isEmpty(plural) then plural = singularform & "s"
    plural = val & " " & plural
end function
0 голосов
/ 31 марта 2009

DateAdd("n", -1, Now)
DateAdd("n", -5, Now)
DateAdd("h", -1, Now)
DateAdd("h", -3, Now)
DateAdd("d", -1, Date)
DateAdd("d", -1, Date)

Не уверен, что вы подразумеваете под частью среды.
Можете ли вы уточнить?

...