在我的应用程序中,用户可以选择日历日期,然后选择他想要添加的天数。
添加工作日期非常好,但我需要跳过工作日。
例如,您将选择日期并添加 +15 天,结果将是星期六或星期日,但在这种情况下,如果结果是这些天之一,我需要始终获得星期一。
这是添加天数的方法
public static Date addDays(Date date, int days) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, days + FirstClass.hotovo);
return cal.getTime();
}
感谢您的帮助,我不是编程专家。我是业余爱好者,仍在学习中..
最佳答案
您应该检查结果是哪一天,即检查是SATURDAY
还是SUNDAY
,然后添加2或1以获得下一个MONDAY
。
NOTE: I do not know what is FirstClass.hotovo so I have removed temporary from below code and you can add it as you would have it in your project. Below is to demonstrate how to check day and add 1 or 2 day respectively.
这是示例代码。
来电者:
addDays(new Date(), 18);
你的方法:
public static Date addDays(Date date, int days) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, days);
Log.d("TEST", "BEFORE CHECKING: " + cal.getTime().toString());
// SATURDAY is the last day of week so add 2 days
if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {
cal.add(Calendar.DATE, 2);
// SUNDAY is the first day of week so add 1 day
} else if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
cal.add(Calendar.DATE, 1);
} // else not required as it means its one of the week day
Log.d("TEST", "AFTER UPDATING: " + cal.getTime().toString());
return cal.getTime();
}
示例运行
结果日期是SATURDAY
,因此添加 2 天即可得到MONDAY
07-25 15:46:55.729 4219-4219/? D/TEST: BEFORE CHECKING: Sat Aug 12 15:46:55 PDT 2017
07-25 15:46:55.729 4219-4219/? D/TEST: AFTER UPDATING: Mon Aug 14 15:46:55 PDT 2017
结果日期是 SUNDAY
,因此添加 1 天即可得到 MONDAY
07-25 15:47:57.634 4322-4322/? D/TEST: BEFORE CHECKING: Sun Aug 13 15:47:57 PDT 2017
07-25 15:47:57.634 4322-4322/? D/TEST: AFTER UPDATING: Mon Aug 14 15:47:57 PDT 2017
结果日期是星期二
,因此不再添加更多天
07-25 15:52:27.115 4445-4445/? D/TEST: BEFORE CHECKING: Tue Aug 15 15:52:27 PDT 2017
07-25 15:52:27.115 4445-4445/? D/TEST: AFTER UPDATING: Tue Aug 15 15:52:27 PDT 2017
关于java - 添加天数,android studio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45313511/