Gets the pretty date. : Date Time Format « Date Time « C# / C Sharp






Gets the pretty date.

      

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Web;
using System.Xml;

class Main{
    /// <summary>
    /// Gets the pretty date.
    /// </summary>
    /// <param name="date">The date.</param>
    /// <returns>Returns a pretty date.</returns>
    public static string GetPrettyDate(string date)
    {
      return GetPrettyDate(date, "dd MMMM yyyy");
    }

    public static string GetPrettyDate(string date, string format)
    {
      // 0. Convert the String into DateTime
      DateTime d;

      if (DateTime.TryParse(date, out d))
      {
        return GetPrettyDate(d, format);
      }

      return date;
    }

    /// <summary>
    /// Gets the pretty date.
    /// </summary>
    /// <param name="date">The date.</param>
    /// <param name="format">The format.</param>
    /// <returns>Returns a pretty date.</returns>
    /// <remarks>
    /// http://dotnetperls.com/pretty-date
    /// http://ejohn.org/blog/javascript-pretty-date/
    /// </remarks>
    public static string GetPrettyDate(DateTime date, string format)
    {
      // 1. Get time span elapsed since the date.
      TimeSpan s = DateTime.Now.Subtract(date);

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

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

      // 4. Don't allow out of range values.
      if (dayDiff < 0 || dayDiff >= 31)
      {
        return FormatDateTime(date, format); // d.ToString(format);
      }

      // 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 FormatDateTime(date, format);
    }
}  

   
    
    
    
    
    
  








Related examples in the same category

1.use the ToString() method to convert a DateTime to a string
2.use the ToLongTimeString() and ToShortTimeString() methods to convert the time parts of a DateTime to long and short time strings
3.use the FromFileTime() method to convert an operating system file timestamp to a DateTime
4.use the ToFileTime() method to convert a DateTime to an operating system file timestamp
5.Format time and date information 1Format time and date information 1
6.Format time and date information 2Format time and date information 2
7.demonstrates culture formattingdemonstrates culture formatting
8.DateTime ToString with CultureInfo
9.The next example formats a DateTime with invariant culture. Invariant culture is always the same, regardless of the computer's settings:
10.Request a specific culture (english language in Great Britain):
11.Compare the results of choosing InvariantInfo with those of choosing CurrentInfo:
12.Format date value as short date format
13.Long date format
14.Sortable date format
15.Universal sortable date format
16.Universal full date/time
17.RFC1123 date format
18.Month date format
19.Year date format
20.General date long time format
21.General date/short time format
22.Full date long time format
23.Full date short time format
24.Long time date format
25.Short time date format
26.Contains helper for converting to and from the date formats
27.DateTime Format: %M
28.DateTime format: MMMM dd, yyyy (dddd)
29.DateTime Format: MM-dd-yy
30.DateTime Format: d, M
31.DateTime Format: d MMMM
32.DateTime Format: dd,MM
33.DateTime Format: ddd d MMM
34.DateTime Format: ddd d MMM (fr-FR)
35.DateTime Format: dddd dd MMMM
36.DateTime Format: dddd dd MMMM (it-IT)
37.DateTime Format: : hh:mm:ss.f
38.DateTime Format: hh:mm:ss.F
39.DateTime Format: hh:mm:ss.ff
40.DateTime Format: hh:mm:ss.FF (2)
41.DateTime Format: "hh:mm:ss.fff
42.DateTime Format: hh:mm:ss.FFF
43.DateTime Format: MM/dd/yyyy g
44.DateTime Format: h:m:s.F t
45.DateTime Format: hh:mm:ss.ff tt
46.DateTime Format: H:mm:ss
47.DateTime Format: HH:mm:ss
48.DateTime Format: %K
49.DateTime Format: hh:mm:ss tt
50.DateTime Format: (M) MMM, MMMM
51.DateTime Format: dd, MM
52.DateTime Format: dddd dd MMMM (2)
53.DateTime Format: yyyyy
54.DateTime Format: %z
55.DateTime Format: zzz, zz
56.DateTime Format: %h
57.DateTime Format: h \\h m \\m
58.Format decimal with different cultures
59.Sql format string to Date
60.dateTime.ToString("dd/MM/yyyy ")
61.dateTime.ToString("dd/MM/yyyy hh:mm")
62.DateTime to short and long String
63.Converts a DateTime object into a unix timestamp number.
64.To Unix time
65.Format Time as ##:##:##
66.Format Time as ##/##/## (2)