如何计算两日期之前的天数(附不完善的代码)?

bwangel 2009-06-11 11:14:04

private static string[] nearDayName = { "三天前", "前天", "昨天", "今天", "明天", "后天", "三天后" };
public static String ToNearDayName(DateTime dt)
{
int days = (dt.Year * 365 + dt.DayOfYear) - (DateTime.Now.Year * 365 + DateTime.Now.DayOfYear);
return ToNearDayName(days);
}

public static String ToNearDayName(int days)
{
days += 3;
days = Math.Max(days, 0);
days = Math.Min(days, 6);
return nearDayName[days];
}


我发明了以上方法来返回昨天今天前天等等,但是还是不太精确,遇到闫年的时候还是会出丑.谁能给个完善的方案.
...全文
45 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chen_ya_ping 2009-07-13
  • 打赏
  • 举报
回复
楼主参考这个:
http://www.cnblogs.com/rodney/archive/2007/09/30/911570.html
可能对你有帮助。
SATAN1122 2009-07-13
  • 打赏
  • 举报
回复
只要判断日期就够了吧
十八道胡同 2009-07-13
  • 打赏
  • 举报
回复
TimeSpan 可以直接datetime相减可得
OnlyAlone 2009-07-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bwangel 的回复:]
TimeSpan我早就想到了,但是如果Date1='2009/6/10 23:59:59', Date2='2009/6/11 00:00:00'
得出来的结果是只有1秒钟,而不是昨天和今天这样的效果
[/Quote]
既然只考虑天,那把时间进行截取,只要日期,然后用TimeSpan也可以吧。
kevin_xu4365 2009-06-11
  • 打赏
  • 举报
回复
在sql里面直接相减不是很简单吗?
bwangel 2009-06-11
  • 打赏
  • 举报
回复
TimeSpan我早就想到了,但是如果Date1='2009/6/10 23:59:59', Date2='2009/6/11 00:00:00'
得出来的结果是只有1秒钟,而不是昨天和今天这样的效果
cpp2017 2009-06-11
  • 打赏
  • 举报
回复
用TimeSpan 就可

TimeSpan = (TimeSpan)(两个日期相减)

sy_binbin 2009-06-11
  • 打赏
  • 举报
回复
/// <summary>
/// 取得与当前时间的间隔(MM-dd hh:mm-刚刚更新)
/// </summary>
public static string GetTimeSpacing(DateTime time1, string format)
{
string strTime = "";
DateTime date1 = DateTime.Now;
DateTime date2 = time1;
TimeSpan dt = date1 - date2;

// 相差天数
int days = dt.Days;
// 时间点相差小时数
int hours = dt.Hours;
// 相差总小时数
double Minutes = dt.Minutes;
// 相差总秒数
int second = dt.Seconds;

if (second < 0) { second = 0; }
if (days == 0 && hours == 0 && Minutes == 0)
{
strTime = "刚刚更新";
}
else if (days == 0 && hours == 0)
{
strTime = Minutes + "分钟前";
}
else if (days == 0)
{
strTime = hours + "小时前";
}
else
{
if(format=="MM-dd hh:mm")
strTime = time1.ToString("MM-dd hh:mm");
else if(format=="yyyy年MM月dd日")
strTime = time1.ToString("yyyy年MM月dd日");
else if (format == "yy-MM-dd")
strTime = time1.ToString("yy-MM-dd");
else if (format == "MM-dd")
strTime = time1.ToString("MM-dd");
else if (format == "MM月dd日")
strTime = time1.ToString("MM月dd日");
}
return strTime;
}


给你做下参考
cyz9977 2009-06-11
  • 打赏
  • 举报
回复
发明~~ 不錯~~

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧