日期顺延问题

huayy 2016-04-09 07:23:44
类似套餐配送的问题,比如用户买了周一至周五5天的盒饭,但是用户突然周一有事,希望往后顺延1天,而配送企业周六和周日是休息的,如何做到顺延一天,并跳过周六和周日。

理想化是这样子,如:
2016-4-4星期一 | 2016-4-5星期二
2016-4-5星期二 | 2016-4-6星期三
2016-4-6星期三 | 2016-4-7星期四
2016-4-7星期四 | 2016-4-8星期五
2016-4-8星期五 | 2016-4-11星期一

跪求C#或VB.NET代码~
...全文
268 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
要送几天就有几条记录,然后用户时间变更时,同步去修改数据库中的记录就可以,或者说你的数据是怎么持久化的?
xuzuning 2016-04-10
  • 打赏
  • 举报
回复
            var dat = new string[]
{
"2016-4-4星期一",
"2016-4-5星期二",
"2016-4-6星期三",
"2016-4-7星期四",
"2016-4-8星期五"
};
foreach (var x in dat)
{
var d = DateTime.Parse(x);
var n = Convert.ToInt32(d.DayOfWeek) == 5 ? 3 : 1;
Console.WriteLine("{0}|{1}", x, d.AddDays(n).ToString("yyyy-MM-dd dddd").Replace(" ", ""));
}
  • 打赏
  • 举报
回复
“是不上班日”这个逻辑跟主算法的逻辑,应该分开的。不同企业有不同的“不上班日”,说不定还是查动态配置表。
  • 打赏
  • 举报
回复
public DateTime 顺延一天(DateTime d)
{
    var r = d.AddDays(1);
    if (是不上班日(r))
        return 顺延一天(r);
    else
        return r;
}

public bool 是不上班日(DateTime d)
{
    var w = d.DayOfWeek;
    return w == DayOfWeek.Saturday || w == DayOfWeek.Sunday;
}
Poopaye 2016-04-10
  • 打赏
  • 举报
回复
nextDay = today.DayOfWeek == DayOfWeek.Friday ? today.AddDays(3) : today.AddDays(1);
风吹腚腚凉 2016-04-10
  • 打赏
  • 举报
回复
我觉得应该是在用户剩余日期后追加一天,删除取消的那一天, 同时需要考虑过年等情况, 所以你们需要有一张休假表,把休假提前写好了, 再修改休假表的同时,对数据进行处理。 是就放到最大的订餐截止日期后就行了,取日期判断是否休假就行了,如果休假日期+1 继续判断。
oioixiabings 2016-04-09
  • 打赏
  • 举报
回复
当然,你还可以设定一个法定假日的列表,再判断所得到的值是否在列表中,如在表中,则再加一天即可
oioixiabings 2016-04-09
  • 打赏
  • 举报
回复

            DateTime today = TodayDTP.Value.Date;
            DateTime NextDay = today.AddDays(1);
            while( NextDay.DayOfWeek==DayOfWeek.Saturday||NextDay.DayOfWeek==DayOfWeek.Sunday)
            {
                NextDay = NextDay.AddDays(1);
            }
oioixiabings 2016-04-09
  • 打赏
  • 举报
回复
把日期+1,判断是星期几,如是周六或周日,就再+1天

111,092

社区成员

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

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

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