2011-09-06 6 views
0

Possible en double:
How do I calculate relative time?temps de calcul dans ASP.NET

Tout en affichant quelque chose sur le SO il montre posté 5 mins ago ou 1hr ago. Comment calculer l'heure et l'afficher de la même manière?

+0

@ Daniel - Je dois la logique d'essayer. Je ne demande pas de code et je demande juste un indice pour commencer. – Mal

+0

cela pourrait vous aider à démarrer: http://stackoverflow.com/questions/842057/how-do-i-convert-a-timespan-to-a-formatted-string – Peter

+0

Vous pouvez prendre 2 instances DateTime et les soustraire comme ça : Résultat TimeSpan = firstDateTimeInstance - secondDateTimeInstance; – Icarus

Répondre

8

Par exemple C# Pretty Date Formatting:

static string GetPrettyDate(DateTime d) 
    { 
    // 1. 
    // Get time span elapsed since the date. 
    TimeSpan s = DateTime.Now.Subtract(d); 

    // 2. 
    // Get total number of days elapsed. 
    int dayDiff = (int)s.TotalDays; 

    // 3. 
    // Get total number of seconds elapsed. 
    int secDiff = (int)s.TotalSeconds; 

    // 4. 
    // Don't allow out of range values. 
    if (dayDiff < 0 || dayDiff >= 31) 
    { 
     return null; 
    } 

    // 5. 
    // Handle same-day times. 
    if (dayDiff == 0) 
    { 
     // A. 
     // Less than one minute ago. 
     if (secDiff < 60) 
     { 
     return "just now"; 
     } 
     // B. 
     // Less than 2 minutes ago. 
     if (secDiff < 120) 
     { 
     return "1 minute ago"; 
     } 
     // C. 
     // Less than one hour ago. 
     if (secDiff < 3600) 
     { 
     return string.Format("{0} minutes ago", 
      Math.Floor((double)secDiff/60)); 
     } 
     // D. 
     // Less than 2 hours ago. 
     if (secDiff < 7200) 
     { 
     return "1 hour ago"; 
     } 
     // E. 
     // Less than one day ago. 
     if (secDiff < 86400) 
     { 
     return string.Format("{0} hours ago", 
      Math.Floor((double)secDiff/3600)); 
     } 
    } 
    // 6. 
    // Handle previous days. 
    if (dayDiff == 1) 
    { 
     return "yesterday"; 
    } 
    if (dayDiff < 7) 
    { 
     return string.Format("{0} days ago", 
     dayDiff); 
    } 
    if (dayDiff < 31) 
    { 
     return string.Format("{0} weeks ago", 
     Math.Ceiling((double)dayDiff/7)); 
    } 
    return null; 
    } 

(Et vous pouvez également utiliser un plugin jquery nommé Prettydate.)