zoukankan      html  css  js  c++  java
  • 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 下的几个参数

  • 相关阅读:
    cmanformat
    mysql-sql语言参考
    jQuery 判断多个 input checkbox 中至少有一个勾选
    Java实现 蓝桥杯 算法提高 计算行列式
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 算法提高 成绩排序2
    Java实现 蓝桥杯 算法提高 成绩排序2
    Java实现 蓝桥杯 算法提高 成绩排序2
  • 原文地址:https://www.cnblogs.com/97310ZT/p/8549300.html
Copyright © 2011-2022 走看看