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 下的几个参数

  • 相关阅读:
    Linux上面执行 Windows 命令(比如 重启服务)的简单方法
    Linux 通过cksum 来判断文件是否是相同
    Linux 根据端口快速停止服务并启动的办法
    Delphi控件开发浅入深出(三)
    Delphi 资源文件( .res)
    C++中模块(Dll)对外暴露接口的方式
    delphi Align属性
    cport串口控件的应用
    两款工控控件对比评测:Iocomp和ProEssentials
    Android 将ARGB图片转换为灰度图
  • 原文地址:https://www.cnblogs.com/97310ZT/p/8549300.html
Copyright © 2011-2022 走看看