2009-03-31 6 views
1

Quelqu'un at-il une date/heure relative à partir de maintenant à une fonction ASP/naturel pour VBScript? C'est comme Twitter.Date/heure relative pour ASP classique

Exemples:

  • Moins il y a 1 minute
  • environ 5 minutes il y a
  • Environ une heure il y a
  • Il y a environ 3 heures
  • Hier
  • mercredi
  • etc

Répondre

-1
 

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

Vous ne savez pas ce que vous voulez dire par mercredi partie.
Pouvez-vous élaborer?

+0

Utilisez la fonction DateDiff pour comparer l'heure actuelle avec la date de mise à jour, si c'est le cas. – shahkalpesh

+0

par exemple. DateDiff ("n", dateofupdate, maintenant) – shahkalpesh

3

C'est celui que j'utilise. Assez sûr que je viens de l'arracher de l'exemple de Jeff qu'il a utilisé pour ce site.

Oui, oui j'ai fait: How can I calculate relative time in 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

pris de 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

écrire ma propre fonction comme celui-ci, peut être trouvé à http://asp.web.id/asp-classic-relative-date-function.html

il est utilisé asp de conversion date au format unixtimestamp et calculer la marge de temps. il est personnalisable, vous pouvez également créer une date relative pour la date à venir en utilisant cette fonction.