c# 时间进行格式化为几天前,几小时前,几分钟前

前台进行显示日期时需要进行格式化,即日期显示为几天前几小时前

public  static  string  DateFormatToString(DateTime dt)

{

//TimeSpan表示时间间隔

TimeSpan span = (DateTime.Now - dt).Duration();//表示取timespan绝对值
            if (span.TotalDays > 60)
            {
                return dt.ToString("yyyy-MM-dd");
            }
            else if (span.TotalDays > 30)
            {
                return "1个月前";
            }
            else if (span.TotalDays > 14)
            {
                return "2周前";
            }
            else if (span.TotalDays > 7)
            {
                return "1周前";
            }
            else if (span.TotalDays > 1)
            {
                return string.Format("{0}天前", (int)Math.Floor(span.TotalDays));
            }
            else if (span.TotalHours > 1)
            {
                return string.Format("{0}小时前", (int)Math.Floor(span.TotalHours));
            }
            else if (span.TotalMinutes > 1)
            {
                return string.Format("{0}分钟前", (int)Math.Floor(span.TotalMinutes));
            }
            else if (span.TotalSeconds >= 1)
            {
                return string.Format("{0}秒前", (int)Math.Floor(span.TotalSeconds));
            }
            else
            {
                return "1秒前";
            }

}

//第二种

public static string FormatDate(DateTime dt)
        {
            var byTime = new long[] { 24 * 60 * 60, 60 * 60, 60, 1 };
            var unit = new string[] { "", "小时", "分钟", "" };

            var ct = (DateTime.Now - dt).TotalSeconds;
            if (ct < 0)
            {
                return "";
            }

            var sb = new System.Text.StringBuilder();
            for (var i = 0; i < byTime.Length; i++)
            {
                if (ct < byTime[i])
                {
                    continue;
                }
                var temp = Math.Floor(ct / byTime[i]);
                ct = ct % byTime[i];
                if (temp > 0)
                {
                    sb.Append(temp + unit[i]);
                }


                /*一下控制最多输出几个时间单位:
                    一个时间单位如:N分钟前
                    两个时间单位如:M分钟N秒前
                    三个时间单位如:M年N分钟X秒前
                以此类推
                */
                if (sb.Length >= 1)
                {
                    break;
                }
            }
            return sb.ToString() + "";
        }

timeSpan 下的几个参数

原文地址:https://www.cnblogs.com/97310ZT/p/8549300.html