Datetime 经典ASP的相对日期/时间

Datetime 经典ASP的相对日期/时间,datetime,asp-classic,vbscript,Datetime,Asp Classic,Vbscript,对于VBScript中的经典ASP函数,是否有人具有从现在起到自然/人工的相对日期/时间?这就像推特 示例: 不到一分钟前 大约5分钟前 大约一小时前 大约3小时前 昨天 星期三 等等 不确定你所说的星期三部分是什么意思。 你能详细说明一下吗?这是我用的。很确定我刚刚从Jeff在这个网站上使用的示例中删除了它 是的,是的,我做了: 函数相对时间(dt) 尺寸t_秒:t_秒=1 暗t_分钟:t_分钟=60*t_秒 变暗t_小时:t_小时=60*t_分钟 昏暗的t_天:t_天=24*t_小时 D

对于VBScript中的经典ASP函数,是否有人具有从现在起到自然/人工的相对日期/时间?这就像推特

示例:

  • 不到一分钟前
  • 大约5分钟前
  • 大约一小时前
  • 大约3小时前
  • 昨天
  • 星期三
  • 等等
不确定你所说的星期三部分是什么意思。

你能详细说明一下吗?

这是我用的。很确定我刚刚从Jeff在这个网站上使用的示例中删除了它

是的,是的,我做了:

函数相对时间(dt)
尺寸t_秒:t_秒=1
暗t_分钟:t_分钟=60*t_秒
变暗t_小时:t_小时=60*t_分钟
昏暗的t_天:t_天=24*t_小时
Dim t_月:t_月=30*t_日
Dim delta:delta=DateDiff(“s”,dt,Now)
Dim strTime:strTime=“”
如果(增量<1*t_分钟),则
如果delta=0,则
strTime=“刚才”
ElseIf delta=1,则
strTime=“一秒钟前”
其他的
strTime=delta&“秒前”
如果结束
ElseIf(增量<2*t_分钟)然后
strTime=“一分钟前”
ElseIf(增量<50*t_分钟)然后
strTime=最大值(圆形(增量/分钟)和“分钟前”
ElseIf(增量<90*t_分钟)然后
strTime=“一小时前”
ElseIf(δ<24*t_小时)然后
strTime=圆形(增量/单位小时)和“小时前”
ElseIf(δ<48*t_小时)然后
strTime=“昨天”
ElseIf(delta<30*t_天)则
标准时间=圆形(delta/t_日)和“日前”
ElseIf(δ<12*t_月),然后
暗淡的月份
月数=轮数(增量/t_月)
如果月份取自

“这里有一些全球助手。。。
公共函数sayDate(日期、模式、符号)
如果不是isDate(dat),则
sayDate=“未知”
退出功能
如果结束
如果是,那么
diff=dateDiff(“s”,dat,now())
如果diff=0,则
sayDate=“刚才”:退出功能
如果差值<60且差值>=0,则
sayDate=diff&“秒前”:退出功能
elseif diff=60且diff>=0,则
sayDate=diff&“分钟前”:退出功能
elseif diff=0,则
sayDate=int(diff/60)和“分钟前”:退出功能
如果差值<86400且差值>=0,则
sayDate=复数(int(diff/60/60),“hour”,空)和“ago”
其他的
如果datevalue(dat)=日期(),则
sayDate=“今天”
elseif dateValue(dat)=dateAdd(“d”,1,date())然后
sayDate=“明天”
elseif dateValue(dat)=dateAdd(“d”,-1,date()),然后
sayDate=“昨天”
如果结束
如果结束
如果结束
如果相对表示法和lCase(mode)=“datetime”和isEmpty(sayDate),则
diff=dateDiff(“d”,dat,now())
sayDate=复数(diff,“day”,空)和“ago”
退出功能
如果结束
如果我是空的(说日期),那么
sayDate=日(dat)和月(月(dat),真)
如果年(dat)年(now()),则sayDate=sayDate&&&year(dat)
如果结束
如果lCase(模式)“datetime”,则退出函数

如果uBound(split(dat,“”)我这样写我自己的函数,可以在


它用于将asp日期转换为unixtimestamp格式并计算时间间隔。它是可自定义的,您也可以使用此功能为即将到来的日期创建相对日期。

如果是这样,请使用DateDiff函数将当前时间与更新日期进行比较。

DateAdd("n", -1, Now)
DateAdd("n", -5, Now)
DateAdd("h", -1, Now)
DateAdd("h", -3, Now)
DateAdd("d", -1, Date)
DateAdd("d", -1, Date)
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
'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