如何在JavaFX DateTime API中更改LocalDate的开始时间和结束时间

时间:2015-10-26 09:27:57

标签: java datetime javafx javafx-8 jodatime

我开发了一个在LocalDate()中使用Joda Time API的JavaFX应用程序。一天的默认开始和结束时间是00:00:00 - 23:59:59。我想将其更改为08:00:00 - 07:59:59 (Following Day)

我在申请中用来计算昨天时间表的代码如下:

LocalDate now = new LocalDate();
LocalDate yesterday = now.minusDays(1);

此代码在2015-10-25 00:00:002015-10-25 23:59:59之间进行计算,但我希望它介于2015-10-25 08:00:002015-10-26 07:59:59之间。

我使用SQL尝试了这个并且它工作正常。

IF((NOW() > TIMESTAMP(CONCAT(CURDATE(), ' ', '00:00:00'))) AND (NOW() < TIMESTAMP(CONCAT(CURDATE(), ' ', '08:00:00'))),
(`created_date` >= TIMESTAMP(CONCAT(DATE(CURDATE() - 1), ' ', '08:00:00')) AND `created_date` < TIMESTAMP(CONCAT(DATE(CURDATE()), ' ', '08:00:00'))),
(`created_date` >= TIMESTAMP(CONCAT(CURDATE(), ' ', '08:00:00')) AND `created_date` < TIMESTAMP(CONCAT(DATE(CURDATE() + 1), ' ', '08:00:00'))))

查询是如何使用JodaTime API实现此目的的?

1 个答案:

答案 0 :(得分:0)

您可以实现以下逻辑:

  • 获取当前日期时间。
  • 如果我们在8之后,那么开始日期是今天的8
  • 否则(这意味着我们在午夜和8之间),开始日期是昨天的8
  • 结束日期仅为开始日期后的一天,减去1秒。

代码:

LocalDateTime now = LocalDateTime.now();
LocalDateTime todayAt8 = now.withTime(8, 0, 0, 0);

LocalDateTime startDate = todayAt8.isBefore(now) ? todayAt8 : todayAt8.minusDays(1);
LocalDateTime endDate = startDate.plusDays(1).minusSeconds(1);