2012-05-27 1 views
0

я искал способ, который отображения даты, как в StackOverflowКак реализовать Поскольку метод

что-то вроде:

  • 1 час назад
  • 2 минуты назад
  • Только сейчас

Etc ...

+1

См [это] (http://stackoverflow.com/questions/9509372/datetime- серия-оф-лет-месяцы-недели-и-мин-назад/9542025 # 9542025) – Jani

ответ

4

Вот способ сделать это:

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; 
    } 

Источник: http://www.dotnetperls.com/pretty-date