C# 日期 获得天数

shunzi403566 2012-03-16 01:18:14
两个日期相减 获取之间的天数

而且它是不是或自动判断31 天还是 30 天 二月是不是自动判断28 还是29天
...全文
305 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
SMG008 2012-03-16
  • 打赏
  • 举报
回复
+1[Quote=引用 11 楼 liuzhc 的回复:]
//DateTime.Day获取日期时间的日期部分,忽略时间。
//DateTime.Parse("2012-3-2 12:33:33").Day为2012年3月2日0点0分0秒。
TimeSpan Ts = Convert.ToDateTime("2012-3-18 05:00:00").Day - Convert.ToDateTime("2012-3-16 08:00:00").Day;
……
[/Quote]
jxfgaoshou 2012-03-16
  • 打赏
  • 举报
回复
既然已经转换成ToDateTime去减了,就要把类型改成int,而不是TimeSpan吧?菜鸟第一次回答。
[Quote=引用 11 楼 liuzhc 的回复:]
//DateTime.Day获取日期时间的日期部分,忽略时间。
//DateTime.Parse("2012-3-2 12:33:33").Day为2012年3月2日0点0分0秒。
TimeSpan Ts = Convert.ToDateTime("2012-3-18 05:00:00").Day - Convert.ToDateTime("2012-3-16 08:00:00").Day;
……
[/Quote]
jxfgaoshou 2012-03-16
  • 打赏
  • 举报
回复
11楼的做法很不错。
coreyjk 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 liuzhc 的回复:]
//DateTime.Day获取日期时间的日期部分,忽略时间。
//DateTime.Parse("2012-3-2 12:33:33").Day为2012年3月2日0点0分0秒。
TimeSpan Ts = Convert.ToDateTime("2012-3-18 05:00:00").Day - Convert.ToDateTime("2012-3-16 08:00:00").Day;
……
[/Quote]
Good
拿凤姐抵债 2012-03-16
  • 打赏
  • 举报
回复
//DateTime.Day获取日期时间的日期部分,忽略时间。
//DateTime.Parse("2012-3-2 12:33:33").Day为2012年3月2日0点0分0秒。
TimeSpan Ts = Convert.ToDateTime("2012-3-18 05:00:00").Day - Convert.ToDateTime("2012-3-16 08:00:00").Day;
L61551 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 unjihzgnap 的回复:]

这是因为相差没有满一天不计,如要不满一天的也算一天的话再加23小时就好了
引用 5 楼 w15948723926 的回复:

引用 4 楼 thedolphin 的回复:
TimeSpan完美解决

其实 也有点点的缺陷,前天我还改过类似的代码.
DateTime d1 = Convert.ToDateTime("2008-2-1 13:00:00");
DateTime d2 ……
[/Quote]


TimeSpan Ts = Convert.ToDateTime("2012-3-18 05:00:00") - Convert.ToDateTime("2012-3-16 08:00:00");
Response.Write(Math.Ceiling(Ts.TotalDays));


可以这样。。
ViewStates 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 w15948723926 的回复:]

引用 4 楼 thedolphin 的回复:
TimeSpan完美解决

其实 也有点点的缺陷,前天我还改过类似的代码.
DateTime d1 = Convert.ToDateTime("2008-2-1 13:00:00");
DateTime d2 = Convert.ToDateTime("2008-2-2 12:00:00");
……
[/Quote]
如果这个TIMESPAN的DAYS返回是1的话这才是有问题了。
unjihzgnap 2012-03-16
  • 打赏
  • 举报
回复
这是因为相差没有满一天不计,如要不满一天的也算一天的话再加23小时就好了
[Quote=引用 5 楼 w15948723926 的回复:]

引用 4 楼 thedolphin 的回复:
TimeSpan完美解决

其实 也有点点的缺陷,前天我还改过类似的代码.
DateTime d1 = Convert.ToDateTime("2008-2-1 13:00:00");
DateTime d2 = Convert.ToDateTime("2008-2-2 12:00:00");
……
[/Quote]
unjihzgnap 2012-03-16
  • 打赏
  • 举报
回复
TimeSpan
xiaoning8201 2012-03-16
  • 打赏
  • 举报
回复
是自动 加的 前些天刚测试过 string sdt = (DateTime.Today.AddMonths(-1)).ToString();

Ival 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 thedolphin 的回复:]
TimeSpan完美解决
[/Quote]
其实 也有点点的缺陷,前天我还改过类似的代码.
DateTime d1 = Convert.ToDateTime("2008-2-1 13:00:00");
DateTime d2 = Convert.ToDateTime("2008-2-2 12:00:00");
TimeSpan span = d2.Subtract(d1); //算法是d2 减去 d1
string ww = span.Days + "天"
这两个时间相差23小时,但是计算相差天数的话某些特定的情况下两个日期相差的是1天,而span.Days 却是0
即ww=0天

色拉油 2012-03-16
  • 打赏
  • 举报
回复
TimeSpan完美解决
EnForGrass 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 chinajiyong 的回复:]

C# code

System.TimeSpan timeSpan = (System.TimeSpan)(DischargeDate - AdmissionDate);
hidTreatDay.Value = timeSpan.Days.ToString();
[/Quote]

DateTime d1 = Convert.ToDateTime("2008-2-1 05:00:00");
DateTime d2 = Convert.ToDateTime("2008-3-5 08:00:00");
TimeSpan span = d2.Subtract(d1); //算法是d2 减去 d1
string ww = span.Days + "天"

肯定是自动判断,不然这函数用什么用
51Crack 2012-03-16
  • 打赏
  • 举报
回复
你试试不就知道了
EnForGrass 2012-03-16
  • 打赏
  • 举报
回复

System.TimeSpan timeSpan = (System.TimeSpan)(DischargeDate - AdmissionDate);
hidTreatDay.Value = timeSpan.Days.ToString();

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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