gpt4 book ai didi

java - 在 Java 中使用 Date 为用户设置随机日期?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:07:51 25 4
gpt4 key购买 nike

例如,我有 30 个用户,我想为每个人设置假期的随机开始日和随机结束日。我想使用 Date,而不是 LocalDate。如果我必须使用 LocalDate,这就是答案。

LocalDate date = LocalDate.now();

List<VacationUser> collectVacationUser = allVacationUsers.stream()
.map(user -> {
if (inVacation()) {
return new VacationUser(date.minusDays(ThreadLocalRandom.current().nextInt(1, 5)),
date.plusDays(ThreadLocalRandom.current().nextInt(1, 5)));
} else {
return new VacationUser(user.getPrimaryEmail());
}
}).collect(toList());
return collectVacationUser;
}

我想用 Date 做这个,因为在 JSON 日期格式中,“Date”是这个“yyyy/mm/dd”,另一方面,如果我使用 LocalDate,JSON 中的格式是这样的

"year":2018,"month":"AUGUST","era":"CE","dayOfMonth":16,"dayOfWeek":"THURSDAY","dayOfYear":228,"leapYear":false,"monthValue":8,"chronology":{"id":"ISO","calendarType":"iso8601"

最佳答案

tl;dr

  • 使用适合您的值的类型:LocalDate
  • 永远不要使用糟糕的遗留类 java.util.Date
  • 学习在 Java⇔JSON 序列化框架中使用转换器/适配器
  • 使用标准ISO 8601尽可能采用日期时间值的格式

详情

使用适当的类型来表示您的数据值。对于只有日期的值,没有时间和时区,适当的类型是 LocalDate

切勿使用 java.util.Date。多年前,java.time 类取代了那个可怕的类。

至于在 JSON 中生成文本表示,那是一个完全不同的问题。

JSON 的数据类型很少,而且没有一种与日期时间相关。因此,无论您为 LocalDate 输入获取的 JSON 输出是您正在使用的特定 Java-to-JSON 库的函数。你没有透露是什么图书馆,所以我们无法提供进一步的帮助。

我可以告诉你,有一个既定的实用国际标准来表示日期时间值:ISO 8601 .我强烈建议在将日期时间值序列化为文本时始终使用这些标准格式。

对于仅限日期的值,标准格式为 YYYY-MM-DD,例如 2018-01-23

java.time 类在解析/生成字符串时默认使用这些标准格式。

LocalDate.parse( "2018-01-23" ) ;

和:

myLocalDate.toString() 

2018-01-23


关于java.time

java.time框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧类 legacy日期时间类,例如 java.util.Date , Calendar , & SimpleDateFormat .

Joda-Time项目,现在在maintenance mode , 建议迁移到 java.time类。

要了解更多信息,请参阅 Oracle Tutorial .并在 Stack Overflow 中搜索许多示例和解释。规范为 JSR 310 .

您可以直接与您的数据库交换java.time 对象。使用JDBC driver符合 JDBC 4.2或以后。不需要字符串,不需要 java.sql.* 类。

从哪里获得 java.time 类?

ThreeTen-Extra项目用附加类扩展 java.time。该项目是 future 可能添加到 java.time 的试验场。您可能会在这里找到一些有用的类,例如 Interval , YearWeek , YearQuarter , 和 more .

关于java - 在 Java 中使用 Date 为用户设置随机日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51841359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com