Calculate relative time in C#

后端 未结 30 2113
生来不讨喜
生来不讨喜 2020-11-21 05:59

Given a specific DateTime value, how do I display relative time, like:

  • 2 hours ago
  • 3 days ago
  • a month ago
30条回答
  •  我在风中等你
    2020-11-21 06:12

    Here a rewrite from Jeffs Script for PHP:

    define("SECOND", 1);
    define("MINUTE", 60 * SECOND);
    define("HOUR", 60 * MINUTE);
    define("DAY", 24 * HOUR);
    define("MONTH", 30 * DAY);
    function relativeTime($time)
    {   
        $delta = time() - $time;
    
        if ($delta < 1 * MINUTE)
        {
            return $delta == 1 ? "one second ago" : $delta . " seconds ago";
        }
        if ($delta < 2 * MINUTE)
        {
          return "a minute ago";
        }
        if ($delta < 45 * MINUTE)
        {
            return floor($delta / MINUTE) . " minutes ago";
        }
        if ($delta < 90 * MINUTE)
        {
          return "an hour ago";
        }
        if ($delta < 24 * HOUR)
        {
          return floor($delta / HOUR) . " hours ago";
        }
        if ($delta < 48 * HOUR)
        {
          return "yesterday";
        }
        if ($delta < 30 * DAY)
        {
            return floor($delta / DAY) . " days ago";
        }
        if ($delta < 12 * MONTH)
        {
          $months = floor($delta / DAY / 30);
          return $months <= 1 ? "one month ago" : $months . " months ago";
        }
        else
        {
            $years = floor($delta / DAY / 365);
            return $years <= 1 ? "one year ago" : $years . " years ago";
        }
    }    
    

提交回复
热议问题