当前位置: 首页 > 面试题库 >

如何考虑不增加周末而将营业时间添加到Date?-Java

上官恩
2023-03-14
问题内容

我想增加一定数量的日期,而忽略周末

例如,

(星期五18:00)+ 48 =(星期二18:00)(星期六和星期日被忽略)

由于该公司24小时工作,因此营业时间为24。但是我仍然无法仅在工作日增加工作时间

函数可以是这样的:

public Date getTaskEndTime(Calendar startDate, int hours){
   // calculate the end time by adding the hours ignoring the weekends
}

问题答案:

逐步增加小时,然后增加24小时。并在每个步骤之后检查是否在星期六或星期天结束。在每种情况下,都需要增加24小时。那应该做你想要的。

public Date getTaskEndTime(Calendar startDate, int hours){
    while (hours > 0){
        int step = 0;
        if(hours > 24) step = 24;
        else step = hours;          
        hours -= step;          
        startDate.add(Calendar.HOUR_OF_DAY, step);          
        int dayOfWeek = startDate.get(Calendar.DAY_OF_WEEK);
        if(dayOfWeek == Calendar.SATURDAY) hours += 24;
        if(dayOfWeek == Calendar.SUNDAY) hours += 24;
    }
    return startDate.getTime();
}


 类似资料:
  • 问题内容: 我有两个时间值。一个用于上次登录时间,一个用于当前登录时间。我必须将以前的登录时间增加一个小时。我使用了日期格式hh:mm:ss。这是我的代码段。 因此,除了上面提到的if条件之外,我还必须在previous_time上增加一个小时,然后执行if条件。如何实现呢? 问题答案:

  • 问题内容: 从: http://docs.python.org/py3k/library/datetime.html#timedelta- objects timedelta对象代表持续时间,即两个日期或时间之间的差。 那么,为什么我会出错: 问题答案: 对象不支持除了用秒。 虽然有一个自然的定义,时钟算术。您可以这样计算: 将datetime.time提升到一个对象,然后添加增量,然后将结果回落

  • 我正在尝试Flink对从CSV文件加载的(排序的)时间戳事件进行基本聚合。 我告诉Flink使用活动时间: 然后我在KeyedStream上使用一个时间窗口 问题是,将窗口更改为10分钟实际上会在该时间过后打印结果! 我的理解是,通过明确告诉Flink使用时间戳字段作为事件时间,操作将不依赖于机器上的实时性。我错过什么了吗?

  • Hi im使用moment js转换此字符串我尝试了: 当我存储在mongodb中时,问题就变成了 反正能解释为什么请?

  • 我观察到每次发出“编译”任务时,SBT都会编译所有源文件,而不管上次编译后的时间戳如何。以下是我的build.sbt文件: 以下是我的项目结构(忽略的项目和目标目录): 出于测试目的,这两个源文件只是空的对象定义。 当我输入“sbt编译”时,我得到了以下信息: 我可以在目标目录中找到新编译的类文件。 没有修改任何源文件,一分钟后,再次键入“sbt compile”,我得到了相同的信息和类文件,只是

  • 问题内容: 我正在升级一个大型构建系统以使用Maven2而不是Ant,并且我有两个相关的要求: 我们需要生成一个带时间戳的工件,因此是 打包 阶段(或任何时间)的一部分,而不是构建 我们应该建立 (其中 只是构建jar的时间戳)。 唯一真正的要求是,时间戳记必须是所生成文件的文件名的一部分。 必须在生成的jar中的 version.properties 文件中包含相同的时间戳。 运行时,此信息包含