如何将工作日和时间对象解析为今天的下一个逻辑日期?

Mri*_*lla 4 java

我在字符串中有一个看起来像的日期MON 07:15.我正在尝试Date使用这段代码解析这个问题:

System.out.println(new SimpleDateFormat("E kk:mm").parse("MON 07:15"));
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,打印一个日期,内容如下:

Mon Jan 05 07:15:00 EET 1970
Run Code Online (Sandbox Code Playgroud)

我想将日期字符串解析为下一个即将到来的日期.在发布时,我的当地日期和时间是Fri Aug 08 11:45:00 EEST 2014,并且下一个星期一将在11日,所以我正在寻找的结果日期是Mon Aug 11 07:15:00 EEST 2014.我怎么解析这个?


我将要解析的日期和时间对象将来总是存在.

Jon*_*eet 7

我将解析与其他一切分开.

解析您已经在做的值,这会给出错误年份的日期.

从那时起,花时间和星期几 - 这些都是重要的事情.你可以抛弃其他一切.

接下来,获取当前日期和时间,并执行您需要的任何操作,以便获得正确的日期/时间.你应该考虑:

  • 你对什么时区感兴趣?
  • 如果当前时间是星期一的06:00,并且您被要求在星期一的07:15,这是指今天还是下周一?
  • 如果当前时间是星期一的08:00,并且您在星期一被要求07:15,这是指今天还是下周一?

通过将解析与计算分开,可以使测试更简单二:分别测试每个操作.我建议使用某种时钟抽象来表示"一个可以及时获取当前瞬间的对象" - 这样你就可以测试"所需日期/时间"和"当前日期/时间"的各种组合.

理想的情况下,使用java.time从Java 8或约达时间 -两者都高于更好的java.util.*API.