java - 如何获取每天随着天数递增的输出

标签 java spring-boot

我做了这个 Java 组件,每天凌晨 1:00 在数据库中插入 2 行。 我知道 date.plusDays(1) 函数可以增加日期,但我不知道每次插入时如何使用它来增加日期。

@Component
public class ScheduledPlans {

 private static final SimpleDateFormat dateFormat = new
 SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ");


 private final Logger log =
  LoggerFactory.getLogger(ScheduledPlans.class);


 @Autowired
 PlanServiceImpl planDao;

 @Scheduled(cron = "0 0 1 * * *") //insert every day at 1:00 AM

 public void reportCurrentTime() throws Exception {
  log.error("The time is now {}", dateFormat.format(new Date()));
  //show the date and the time now 

  //variable declaration
  BigInteger planList;
  BigInteger planList2;
  BigInteger Nbpers = new BigInteger("15");
  String color = "red";
  String nom = "groupeTest";

  LocalDateTime dDate = LocalDateTime.parse("2019-08-03T04:00:00");
  LocalDateTime fDate = LocalDateTime.parse("2019-08-03T11:30:00");

  String color2 = "blue";
  String nom2 = "groupeTest2";

  LocalDateTime dDate2 = LocalDateTime.parse("2019-08-03T11:30:00");
  LocalDateTime fDate2 = LocalDateTime.parse("2019-08-03T19:00:00");


  //insert into the database
  planList = planDao.save(new Plan(color, dDate, fDate, Nbpers, nom, type));

  planList2 = planDao.save(new

   Plan(color2, dDate2, fDate2, Nbpers, nom2, type2));
  List < Plan > list = planDao.getPlan();


  log.error("############Test############");
  //test date incrementation**
  log.error("dDate incremented 1 day : " +
   dDate.plusDays(1));
 }
}

我想要实现的是每天凌晨 1:00 获取输出(完成),但随着天数的增加。

最佳答案

您正在将可怕的 java.sql.Datejava.util.DateSimpleDateFormat 类(现在是旧版)与它们的替代品混合在一起,java.time 包。不要那样做。完全避免遗留日期时间类。

如果您正在尝试跟踪时间轴上的实际时刻,请使用 Instant

Instant instant = Instant.now() ;  // Capture the current moment in UTC.

您的 JDBC 驱动程序可能只支持必需的 OffsetDateTime 类,而不支持可选的 Instant

OffsetDateTime odt = OffsetDateTime.now( ZoneOffset.UTC ) ;  // Capture the current moment in UTC.

如果您尝试在同一天的某些时间记录某种约会,请将您的 LocalDateTime 分成单独的部分:LocalDate本地时间

LocalDate ld = odt.toLocalDate() ;
LocalTime lt1 = LocalTime.of( 4 , 0 ) ;
LocalTime lt2 = LocalTime.of( 11, 30 ) ;

LocalDateTime ldt1 = LocalDateTime.of( ld , lt1 ) ;
LocalDateTime ldt2 = LocalDateTime.of( ld , lt2 ) ;

如果您指的是后一天,请通过调用 plus...minus... 方法来计算日期。

LocalDate dayOfter = odt.toLocalDate().plusDays( 1 ) ;

注意上面的代码没有使用字符串。我们没有费力处理字符串操作,而是使用适当的数据类型来忠实地表示我们的意图。

请注意,如果这些日期和时间值旨在跟踪特定时刻、时间轴上的特定点,那么 LocalDateTime 正是 错误正在使用的类。您应该使用带有 ZoneIdZonedDateTime。但这是一个完全不同的话题,并且已经在 Stack Overflow 上多次讨论过。所以我会保留它。搜索以了解更多信息。

Table of date-time types in Java, both modern and legacy.

您的问题正文似乎与标题完全无关。所以我无法在另一部分帮助你,除了提到这是 SQL 数据库,我们通过使用带有 WHERE 子句的 UPDATE 语句一次更新许多行。参见 tutorial .

关于java - 如何获取每天随着天数递增的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57380194/

相关文章:

java - SQL 数据库未使用 execute/addBatch 通过 Java 填充

java - 在 Windows 7 注册表中查找 Java CurrentVersion

java - 如何在 Spring Boot 2.0.5 应用程序上启用 HTTPS

java - 白标错误页: Spring Boot Application with Eclipse

java - Spring Boot,Spring MVC JSON RequestBody : Unknown property ignored

java - 如何使用 @WebMvcTest 从上下文中排除包

java - 缩小这段代码的最佳方法是什么?

java - 在任务栏上创建新任务的子框架

java - 在Perl中,有没有类似Spring的初始化框架?

java - Spring Boot + apache Camel + mongodb 集成问题