帮我看下日期相减怎么得到天数

锤子馆长 2014-12-23 08:41:21




然后就是退房时间减去入住时间为天数lable13
...全文
203 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dogfish 2014-12-24
  • 打赏
  • 举报
回复
//来个例子说明
DateTime d = DateTime.Now;
DateTime d2 = DateTime.Now;
int days = (d2 - d).Days;
我叫小菜菜 2014-12-23
  • 打赏
  • 举报
回复
引用 2 楼 qq389216533 的回复:
[quote=引用 1 楼 sp1234 的回复:] http://msdn.microsoft.com/zh-cn/library/system.datetime.subtract(v=vs.100).aspx
表示初学者 看的还是有点不太懂[/quote] 点击进去详细方法介绍,不是有详细的demo么?

			System.DateTime date1 = new System.DateTime(1996, 6, 3, 22, 15, 0);
			System.DateTime date2 = new System.DateTime(1996, 12, 6, 13, 2, 0);
			System.DateTime date3 = new System.DateTime(1996, 10, 12, 8, 42, 0);

			// diff1 gets 185 days, 14 hours, and 47 minutes.
			System.TimeSpan diff1 = date2.Subtract(date1);

			// date4 gets 4/9/1996 5:55:00 PM.
			System.DateTime date4 = date3.Subtract(diff1);

			// diff2 gets 55 days 4 hours and 20 minutes.
			System.TimeSpan diff2 = date2 - date3;

			// date5 gets 4/9/1996 5:55:00 PM.
			System.DateTime date5 = date1 - diff2;
  • 打赏
  • 举报
回复
我想复杂了…… 直接两个时间相减,然后向上取整就行了
int days = Math.Ceiling((dt2-dt1).TotalDays)
  • 打赏
  • 举报
回复
你这个问题问的太水了 一般旅馆算钱都是中午12点为基准线,所以算法都要跟着调整的 所以入住时间要以这个时间点为调整,退房时间也是要以这个时间点内调整
const byte SplitHour = 12;//分割时间点
        public int GetDays()
        {
            DateTime dtIn = new DateTime(2014, 12, 1, 0, 0, 0);
            DateTime dtLeave = new DateTime(2014, 12, 13, 20, 0, 0);
            Func<DateTime, DateTime> func = (dt) =>
            {
                if (dt.Date.AddHours(SplitHour) > dt)
                {
                    dt = dt.Date.AddDays(-1);//小于分割时间的话,把时间往前延一天
                }
                return dt.Date;
            };//修正日期
            dtIn = func(dtIn);
            dtLeave = func(dtLeave);
            int days = (dtLeave - dtIn).Days;
            if (days == 0)
            {
                days = 1;
            }
            return days;
        }
EdsionWang 2014-12-23
  • 打赏
  • 举报
回复

 int days = (int)(DateTime.Now - Convert.ToDateTime(shijian.Text)).TotalDays;
取整了,不管过不过12点都算是一天了。
蝶恋花雨 2014-12-23
  • 打赏
  • 举报
回复
lable13.Tetx=ExecDateDiff(DateTime.Parse(shijian.Text), DateTime.Parse(tuifang.Text));
//返回22.85 天  //    return ts3.TotalDays.ToString(); 改成    return ts3.Days.ToString(); 结果是22
[code=csharp]/// <summary>
        /// 程序执行时间测试
        /// </summary>
        /// <param name="dateBegin">开始时间</param>
        /// <param name="dateEnd">结束时间</param>
        /// <returns>返回(天)单位</returns>
        public static string ExecDateDiff(DateTime dateBegin, DateTime dateEnd)
        {
            TimeSpan ts1 = new TimeSpan(dateBegin.Ticks);
            TimeSpan ts2 = new TimeSpan(dateEnd.Ticks);
            TimeSpan ts3 = ts1.Subtract(ts2).Duration();
            //你想转的格式
            return ts3.TotalDays.ToString();
        }
[/code]
wind_cloud2011 2014-12-23
  • 打赏
  • 举报
回复

          DateTime dt1=Convert.ToDateTime(textBox1.Text);
            DateTime dt2=Convert.ToDateTime(textBox2.Text);
            TimeSpan ts = dt2 - dt1;
            int d = ts.Days;

锤子馆长 2014-12-23
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
http://msdn.microsoft.com/zh-cn/library/system.datetime.subtract(v=vs.100).aspx
表示初学者 看的还是有点不太懂

110,534

社区成员

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

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

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