首页 .NET/Web 日期格式化到X天前,X小时前,多少秒前

日期格式化到X天前,X小时前,多少秒前

作者:胡同里的砖头 围观群众:208 更新于:2024-01-08

方式一:

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秒前";
}

}
方式二(多个时间拼接:M年N分钟X秒前):
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属性介绍

  • 本文标题: 日期格式化到X天前,X小时前,多少秒前
  • 文章分类:【.NET/Web】
  • 非特殊说明,本文版权归【胡同里的砖头】个人博客 所有,转载请注明出处.
留言评论
站点声明:
1、本站【胡同里的砖头】个人博客,借鉴网上一些博客模板,取其各优点模块自行拼装开发,本博客开发纯属个人爱好。
2、所有笔记提供给广大用户交流使用,可转载,可复制,纯个人开发所遇问题锦集记录使用
Copyright © huzlblog.com All Rights Reserved. 备案号:苏ICP备2021056683号-8