C#中日期遍历

那么天涯 2014-10-23 09:52:35
根据开始时间和结束时间来判断请假多久
日期天数好像是加不上去,不能跳出循环
for (int i = 0; i < 100; i++)
{
if (DateTime.Parse(_TimeStart).CompareTo(DateTime.Parse(_TimeEnd))>0)
{
if (_StartAM == "AM")
{
if (_EndPM == "AM")
{
_askleaveInfo.TimeInfo = _askleaveInfo.TimeInfo + "【" + _TimeStart.Substring(5, _TimeStart.Length - 5) + "/" + MyTool.Get_DayOfWeekOfData(Convert.ToDateTime(_TimeStart)) + "】";
// _askleaveInfo.TimeInfo = _askleaveInfo.TimeInfo + "【" + _TimeStart.Substring(5, _TimeStart.Length - 5) + "/" + MyTool.Get_DayOfWeekOfData(Convert.ToDateTime(_TimeStart)) + "/上午】";
_askleaveInfo.TimeLength = _askleaveInfo.TimeLength +3;
Convert.ToDateTime(_TimeStart).AddDays(1);

}
if (_EndPM == "PM")
{
_askleaveInfo.TimeInfo = _askleaveInfo.TimeInfo + "【" + _TimeStart.Substring(5, _TimeStart.Length - 5) + "/" + MyTool.Get_DayOfWeekOfData(Convert.ToDateTime(_TimeStart)) + "】";
_askleaveInfo.TimeLength = _askleaveInfo.TimeLength +4;
Convert.ToDateTime(_TimeStart).AddDays(2);


}
}
else if (_StartAM == "PM") {
if (_EndPM == "AM")
{
_askleaveInfo.TimeInfo = _askleaveInfo.TimeInfo + "【" + _TimeStart.Substring(5, _TimeStart.Length - 5) + "/" + MyTool.Get_DayOfWeekOfData(Convert.ToDateTime(_TimeStart)) + "/上午】";
_askleaveInfo.TimeLength = _askleaveInfo.TimeLength +2;
Convert.ToDateTime(_TimeStart).AddDays(1);

}
if (_EndPM == "PM")
{
_askleaveInfo.TimeInfo = _askleaveInfo.TimeInfo + "【" + _TimeStart.Substring(5, _TimeStart.Length - 5) + "/" + MyTool.Get_DayOfWeekOfData(Convert.ToDateTime(_TimeStart)) + "/下午】";
_askleaveInfo.TimeLength = _askleaveInfo.TimeLength +3;
Convert.ToDateTime(_TimeStart).AddDays(1);


}
}
} else{
break;
}
}
...全文
505 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2014-10-23
  • 打赏
  • 举报
回复
AddDays这个函数,有1个输入参数,还有1个返回值 你仅仅传入了输入参数1,返回值没用任何变量来接
於黾 2014-10-23
  • 打赏
  • 举报
回复
Convert.ToDateTime(_TimeStart).AddDays(1); 这是在搞毛线啊 你把它转成时间型之后,就直接丢弃了,根本没有再赋值给任何变量
那么天涯 2014-10-23
  • 打赏
  • 举报
回复
引用 10 楼 zhi_ai_yaya 的回复:
[quote=引用 8 楼 Eimers 的回复:] [quote=引用 7 楼 zhi_ai_yaya 的回复:] [quote=引用 5 楼 zhi_ai_yaya 的回复:] 日期加不上去。。。 AddDays 返回一个新的 DateTime,它将指定的天数加到此实例的值上。 http://msdn.microsoft.com/zh-cn/library/system.datetime.aspx 不能对当前datetime变量赋新值,只能重新引用
Convert.ToDateTime(_TimeStart).AddDays(1); 明显这样代码,执行后,TimeStart的值还是没有加1。 应该这样: new DateTime dtnew=Convert.ToDateTime(_TimeStart).AddDays(1); [/quote] 如果这样写的话,我上边的判断条件不就是没什么用了吗。[/quote] 反正规定是这样,DateTIme类型是只读的(构造后此实例值不再变化)。 要实现赋值: 1.使用新的实例值; 2.覆盖变量TimeStart,实现赋值。 我想到的就是这样,你慢慢研究下~~ [/quote] 谢谢 我在看看
我叫小菜菜 2014-10-23
  • 打赏
  • 举报
回复
好好研究MSDN的demo啊。仔细研究后还是不懂再提问,你好我好大家好~ http://msdn.microsoft.com/zh-cn/library/system.datetime.aspx
我叫小菜菜 2014-10-23
  • 打赏
  • 举报
回复
引用 8 楼 Eimers 的回复:
[quote=引用 7 楼 zhi_ai_yaya 的回复:] [quote=引用 5 楼 zhi_ai_yaya 的回复:] 日期加不上去。。。 AddDays 返回一个新的 DateTime,它将指定的天数加到此实例的值上。 http://msdn.microsoft.com/zh-cn/library/system.datetime.aspx 不能对当前datetime变量赋新值,只能重新引用
Convert.ToDateTime(_TimeStart).AddDays(1); 明显这样代码,执行后,TimeStart的值还是没有加1。 应该这样: new DateTime dtnew=Convert.ToDateTime(_TimeStart).AddDays(1); [/quote] 如果这样写的话,我上边的判断条件不就是没什么用了吗。[/quote] 反正规定是这样,DateTIme类型是只读的(构造后此实例值不再变化)。 要实现赋值: 1.使用新的实例值; 2.覆盖变量TimeStart,实现赋值。 我想到的就是这样,你慢慢研究下~~
那么天涯 2014-10-23
  • 打赏
  • 举报
回复
现在问题是如果,是同一天日期可以添加进去,比如2014-10-23AM 2014-10-23-PM 如果是跨天就不能添加 例如:2014-10-22AM 2014-10-23AM 应该是我判断的问题,具体是什么问题我找了好久也没找到。。 Obj_AskLeave.AskLeaveInfo _askleaveInfo = new Obj_AskLeave.AskLeaveInfo(); string _Start = _PostDate["TimeStart"].ToString(); string _End = _PostDate["TimeEnd"].ToString(); string _TimeStart = _Start.Substring( 0, _Start.Length - 2); string _StartAM = _Start.Substring( _Start.Length - 2, 2); string _TimeEnd = _End.Substring( 0, _End.Length - 2); string _EndPM = _End.Substring( _End.Length - 2, 2); _askleaveInfo.TimeLength=0; if (_TimeStart != _TimeEnd) { for (int i = 0; i < 100; i++) { if (DateTime.Parse(_TimeStart).CompareTo(DateTime.Parse(_TimeEnd))>0) { if (_StartAM == "AM") { if (_EndPM == "AM") { _askleaveInfo.TimeInfo = _askleaveInfo.TimeInfo + "【" + _TimeStart.Substring(5, _TimeStart.Length - 5) + "/" + MyTool.Get_DayOfWeekOfData(Convert.ToDateTime(_TimeStart)) + "】"; // _askleaveInfo.TimeInfo = _askleaveInfo.TimeInfo + "【" + _TimeStart.Substring(5, _TimeStart.Length - 5) + "/" + MyTool.Get_DayOfWeekOfData(Convert.ToDateTime(_TimeStart)) + "/上午】"; _askleaveInfo.TimeLength = _askleaveInfo.TimeLength +3; _TimeStart= Convert.ToDateTime(_TimeStart).AddDays(i).ToString(); } if (_EndPM == "PM") { _askleaveInfo.TimeInfo = _askleaveInfo.TimeInfo + "【" + _TimeStart.Substring(5, _TimeStart.Length - 5) + "/" + MyTool.Get_DayOfWeekOfData(Convert.ToDateTime(_TimeStart)) + "】"; _askleaveInfo.TimeLength = _askleaveInfo.TimeLength +4; _TimeStart = Convert.ToDateTime(_TimeStart).AddDays(i+1).ToString(); } } else if (_StartAM == "PM") { if (_EndPM == "AM") { _askleaveInfo.TimeInfo = _askleaveInfo.TimeInfo + "【" + _TimeStart.Substring(5, _TimeStart.Length - 5) + "/" + MyTool.Get_DayOfWeekOfData(Convert.ToDateTime(_TimeStart)) + "/上午】"; _askleaveInfo.TimeLength = _askleaveInfo.TimeLength +2; Convert.ToDateTime(_TimeStart).AddDays(1); } if (_EndPM == "PM") { _askleaveInfo.TimeInfo = _askleaveInfo.TimeInfo + "【" + _TimeStart.Substring(5, _TimeStart.Length - 5) + "/" + MyTool.Get_DayOfWeekOfData(Convert.ToDateTime(_TimeStart)) + "/下午】"; _askleaveInfo.TimeLength = _askleaveInfo.TimeLength +3; Convert.ToDateTime(_TimeStart).AddDays(1); } } } else{ break; } } } else { if (_StartAM == "AM") { if (_EndPM == "AM") { _askleaveInfo.TimeInfo = _askleaveInfo.TimeInfo + "【" + _TimeStart.Substring(5, _TimeStart.Length - 5) + "/" + MyTool.Get_DayOfWeekOfData(Convert.ToDateTime(_TimeStart)) + "/上午】"; _askleaveInfo.TimeLength++; } if (_EndPM == "PM") { _askleaveInfo.TimeInfo = _askleaveInfo.TimeInfo + "【" + _TimeStart.Substring(5, _TimeStart.Length - 5) + "/" + MyTool.Get_DayOfWeekOfData(Convert.ToDateTime(_TimeStart)) + "】"; _askleaveInfo.TimeLength = _askleaveInfo.TimeLength + 2; } } else if (_StartAM == "PM") { if (_EndPM == "PM") { _askleaveInfo.TimeInfo = _askleaveInfo.TimeInfo + "【" + _TimeStart.Substring(5, _TimeStart.Length - 5) + "/" + MyTool.Get_DayOfWeekOfData(Convert.ToDateTime(_TimeStart)) + "/下午】"; _askleaveInfo.TimeLength++; } } }
那么天涯 2014-10-23
  • 打赏
  • 举报
回复
引用 7 楼 zhi_ai_yaya 的回复:
[quote=引用 5 楼 zhi_ai_yaya 的回复:] 日期加不上去。。。 AddDays 返回一个新的 DateTime,它将指定的天数加到此实例的值上。 http://msdn.microsoft.com/zh-cn/library/system.datetime.aspx 不能对当前datetime变量赋新值,只能重新引用
Convert.ToDateTime(_TimeStart).AddDays(1); 明显这样代码,执行后,TimeStart的值还是没有加1。 应该这样: new DateTime dtnew=Convert.ToDateTime(_TimeStart).AddDays(1); [/quote] 如果这样写的话,我上边的判断条件不就是没什么用了吗。
我叫小菜菜 2014-10-23
  • 打赏
  • 举报
回复
引用 5 楼 zhi_ai_yaya 的回复:
日期加不上去。。。 AddDays 返回一个新的 DateTime,它将指定的天数加到此实例的值上。 http://msdn.microsoft.com/zh-cn/library/system.datetime.aspx 不能对当前datetime变量赋新值,只能重新引用
Convert.ToDateTime(_TimeStart).AddDays(1); 明显这样代码,执行后,TimeStart的值还是没有加1。 应该这样: new DateTime dtnew=Convert.ToDateTime(_TimeStart).AddDays(1);
那么天涯 2014-10-23
  • 打赏
  • 举报
回复
引用 5 楼 zhi_ai_yaya 的回复:
日期加不上去。。。 AddDays 返回一个新的 DateTime,它将指定的天数加到此实例的值上。 http://msdn.microsoft.com/zh-cn/library/system.datetime.aspx 不能对当前datetime变量赋新值,只能重新引用
_TimeStart = Convert.ToDateTime(_TimeStart).AddDays(i+1).ToString(); 给开始时间加一天,我是用来判断,如果开始时间大于结束时间就跳出循环。
我叫小菜菜 2014-10-23
  • 打赏
  • 举报
回复
日期加不上去。。。 AddDays 返回一个新的 DateTime,它将指定的天数加到此实例的值上。 http://msdn.microsoft.com/zh-cn/library/system.datetime.aspx 不能对当前datetime变量赋新值,只能重新引用
Justin-Liu 2014-10-23
  • 打赏
  • 举报
回复
那就是判断有问题呗 算天数用timespan减去节假日天数就可以了
feiyun0112 2014-10-23
  • 打赏
  • 举报
回复
那你就单步跟踪看看,为什么代码这么走
那么天涯 2014-10-23
  • 打赏
  • 举报
回复
引用 1 楼 feiyun0112 的回复:
没看到i的用处?
我试了好多遍发现不能进入循环,是不是我判断语句有问题
feiyun0112 2014-10-23
  • 打赏
  • 举报
回复
没看到i的用处?
那么天涯 2014-10-23
  • 打赏
  • 举报
回复
引用 23 楼 diaodiaop 的回复:
条件:一个开始时间 一个结束时间 问题:计算这2个时间相差了多久? 比如:2014年10月23日 14-11-05 2014年10月24日 16-16-07 结果:1天2小时5分钟2秒? 是这样么...
也没有那么麻烦了,只是单纯的去比较两个时间的大小,如果开始时间大于结束时间就跳出循环了。
by_封爱 版主 2014-10-23
  • 打赏
  • 举报
回复
条件:一个开始时间 一个结束时间 问题:计算这2个时间相差了多久? 比如:2014年10月23日 14-11-05 2014年10月24日 16-16-07 结果:1天2小时5分钟2秒? 是这样么...
於黾 2014-10-23
  • 打赏
  • 举报
回复
如果你就是想把_TimeStart这个字符串加上一天,更新回这个字符串里 _TimeStart=Convert.ToDateTime(_TimeStart).AddDays(1).ToString();
那么天涯 2014-10-23
  • 打赏
  • 举报
回复
引用 19 楼 Z65443344 的回复:
我也没有整个都看. 如果光有代码,没有解释,我才懒得看 看到楼主说时间改变后没反应,我就猜到会是这个问题 楼主,你想要把时间改了之后,什么变量有反应,你就把这个值赋值给那个变量就好了嘛 这跟你自己的逻辑有关系,不是规定好必须赋值给谁的 总之你进行了一大堆计算,却把计算结果直接丢弃掉,没给任何变量,那当然是个无意义的操作
我先试试把数据打印出来看看有什么结果在说。
於黾 2014-10-23
  • 打赏
  • 举报
回复
我也没有整个都看. 如果光有代码,没有解释,我才懒得看 看到楼主说时间改变后没反应,我就猜到会是这个问题 楼主,你想要把时间改了之后,什么变量有反应,你就把这个值赋值给那个变量就好了嘛 这跟你自己的逻辑有关系,不是规定好必须赋值给谁的 总之你进行了一大堆计算,却把计算结果直接丢弃掉,没给任何变量,那当然是个无意义的操作
那么天涯 2014-10-23
  • 打赏
  • 举报
回复
引用 18 楼 diaodiaop 的回复:
你这么多行代码谁会给你一行一行看? 不如你说说你要实现什么吧.. 或者人家一行代码就搞定了.....
根据开始时间和结束时间来判断请假多久 Convert.ToDateTime(_TimeStart).AddDays(1); 我这行代码也是有问题~
加载更多回复(4)

110,538

社区成员

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

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

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