我做了这个 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.Date
或 java.util.Date
和 SimpleDateFormat
类(现在是旧版)与它们的替代品混合在一起,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
正是 错误正在使用的类。您应该使用带有 ZoneId
的 ZonedDateTime
。但这是一个完全不同的话题,并且已经在 Stack Overflow 上多次讨论过。所以我会保留它。搜索以了解更多信息。
您的问题正文似乎与标题完全无关。所以我无法在另一部分帮助你,除了提到这是 SQL 数据库,我们通过使用带有 WHERE 子句的 UPDATE 语句一次更新许多行。参见 tutorial .
关于java - 如何获取每天随着天数递增的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57380194/