- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在 oracle 中有一张表,我在其中保存了墨西哥的十二个公共(public)日,我需要计算自您注册以来的限制日
public Date calcularFechaLimite() {
try {
DiaFestivoDTO dia = new DiaFestivoDTO();
// Calendar fechaActual = Calendar.getInstance();
Calendar fechaL = Calendar.getInstance();
fechaL.add(Calendar.DATE, 3);
switch (fechaL.get(Calendar.DAY_OF_WEEK)) {
case Calendar.SATURDAY:
fechaL.add(Calendar.DATE, 2);
break;
case Calendar.SUNDAY:
fechaL.add(Calendar.DATE, 2);
break;
case Calendar.MONDAY:
fechaL.add(Calendar.DATE, 2);
break;
case Calendar.TUESDAY:
fechaL.add(Calendar.DATE, 1);
default:
break;
}
dia.setFechaLimite(fechaL.getTime());
Integer numeroDiasFest = seleccionPagoBO.obtenerDiasFestivos(dia);
if (numeroDiasFest != 0) {
fechaL.add(Calendar.DATE, numeroDiasFest);
dia.setFechaLimite(fechaL.getTime());
}
fechaLimite = fechaL.getTime();
} catch (Exception e) {
e.printStackTrace();
}
return fechaLimite;
}
这就是我所拥有的,但 3 月 28 日和 29 日是公众日,它不起作用,知道吗??
最佳答案
几个问题:
您没有检查您跳过的前 3 天是否包含周末。
此外,您还跳过了奇怪的天数并跳过了工作日(这是工作日,因此不应跳过)。
我假设方法 DiaFestivoDTO.obtenerDiasFestivos() 计算特定日期范围内的国定假日数量,但开始日期是哪一天?它是否初始化为创建 DiaFestivoDTO 时的当前日期?
当您的日期范围内有国定假日时,您会增加日期范围,但从不检查这个新的日期范围是否包括新的国定假日或周末。
如果您要做的是计算“从现在起 3 个工作日后”的日期,我大致会这样做:
// get all the holidays as java.util.Date
DiaFestivoDTO dia = new DiaFestivoDTO();
List<Date> holidays = dia.getAllNationalHolidays();
// get the current date without the hours, minutes, seconds and millis
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
// iterate over the dates from now and check if each day is a business day
int businessDayCounter = 0
while (businessDayCounter < 3) {
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek != Calendar.SATURDAY && dayOfWeek != Calendar.SUNDAY && !holidays.contains(cal.getTime())) {
businessDayCounter++;
}
cal.add(Calendar.DAY_OF_YEAR, 1);
}
Date threeBusinessDaysFromNow = cal.getTime();
为了实现这一点,我建议您添加一个新方法“getAllNationalHolidays”来列出所有假期,因为在内存中存储十二个日期比多次访问数据库来检查它们更有效。
如果您不能更改/添加数据库方法,那么您可以这样做
while (businessDayCounter < 3) {
// determine if this day is a holiday
DiaFestivoDTO dia = new DiaFestivoDTO();
dia.setFechaInitial(cal.getTime());
dia.setFechaLimite(cal.getTime());
boolean isHoliday = seleccionPagoBO.obtenerDiasFestivos(dia) > 0;
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek != Calendar.SATURDAY && dayOfWeek != Calendar.SUNDAY && !isHoliday) {
businessDayCounter++;
}
cal.add(Calendar.DAY_OF_YEAR, 1);
}
这里我假设您可以使用“setFechaInitial”或类似的东西在您的 DiaFestivoDTO 中设置“开始”日期。但是通过这种方式,您将至少调用数据库 3 次,效率很低。
关于java - 在没有星期六,星期日和公共(public)假期的情况下计算java中的工作日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15622413/
我需要将日期截断到一周的开始,在我的例子中是星期天。我如何在 PostgreSQL 中执行此操作?这截断到星期一: date_trunc('week', mydate) 最佳答案 如果您从当前日期中减
我需要形成几个包含日期集的子查询,仅包括两个设置点之间的星期日,例如 01.04.2018 和 30.06.2018 之间。 想到的第一件事是这样的: SELECT '01.04.2018' STAR
我有周数(例如 23),我想获取该周周一和周日的日期。 我假设星期一是一周的第一天(例如,我的脚本中有 SET DATEFIRST 1)。 最佳答案 DECLARE @startweek1 datet
我使用 Bootstrap DateTimePicker 来显示日历,我想从日历中删除一些天(禁用它们) $(function () { $('#datetimepicker1').d
我有以下代码: function myFunction() { var ss = SpreadsheetApp.getActiveSpreadsheet(); // current
我有以下代码: function myFunction() { var ss = SpreadsheetApp.getActiveSpreadsheet(); // current
我想知道如何以 2013 年 04 星期日的格式将日期和时间最好地插入到数据库表中。我一直在尝试但一直插入为 2013-09-16 。谢谢 这是我的sql代码: $query = "INSERT IN
我正在使用 UILocalNotification 进行报警。我有一个基于工作日(星期日、星期一、星期二、星期三、星期四、星期五、星期六)重复的自定义选项。这么多应用程序都做了这个过程。我尽力了。但我
下面的函数返回图表数据 上述函数返回的输出格式如下 [Object { date=Date, value=112, volume=1469}, Object { date=Date, value
我是一名优秀的程序员,十分优秀!