我有类似“2021-06-01”的字符串,我希望将其转换为“2021-06-01T00:00:00+02:00”。我知道,最简单的解决方案是串接:
date = date+"T00:00:00+02:00";
但是,我希望使用zoneddatetime
来实现。目前我的解决方案是:
public static String formatDate(String date, DateTimeFormatter formatter) {
return ZonedDateTime.parse(date).format(formatter);
}
然后使用:
formatDate('2021-06-01', DateTimeFormatter.ISO_LOCAL_DATE);
然而,它抱怨说:
java.time.format.DateTimeParseException: Text '2021-06-01' could not be parsed at index 10
有解决办法吗?
您的日期字符串没有时间,也没有区域,因此不能将其解析为zoneddatetime
。您还使用了错误的DateTimeFormatter
来格式化它。iso_local_date
生成的格式为yyyy-mm-dd
,而不是您想要的格式。
您应该将日期字符串解析为localdate
,这只是一个日期,因为该字符串中只有那么多信息。
然后,您应该将时间组件和偏移量组件添加到解析的日期中,然后对其进行格式化:
public static String formatDate(String date) {
return LocalDate.parse(date)
.atStartOfDay() // sets the time to 00:00:00
.atOffset(ZoneOffset.ofHours(2)) // sets the offset to +02:00
.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME); // formats it using the desired format
}
注意,atoffset
为您提供了一个offsetdatetime
,这对于您想要做的事情已经足够了。如果您真的想使用zoneddatetime
,只需将其改为atzone
,它也会起作用,但我认为这是不必要的。
我有一个格式化的字符串日期 2020/04/16 (年/月/日) 我想把这个字符串解析成日期时间 显然不起作用,没有正确的日期格式。 有人知道把这个字符串解析成日期时间的最好方法是什么吗?
问题内容: 我正在使用代码将字符串格式化为日期 但是,如何将日期从格式转换为格式? 问题答案: 使用SimpleDateFormat#format(Date):
ObjectMapper不会将对象格式化为自定义对象。 波乔不在我的控制之下,所以我不能改变它。我需要序列化WS的POJO对象。POJO有(我不知道为什么,因为它的日期来自数据库)。 我使用的是Spring boot 2.1.8。释放,所以。。。我将其放入我的依赖项中: 我还在应用程序中添加了这个。特性: 在配置文件中,我在配置文件中添加了这个bean,因为尽快配置ObjectMapper以接受更
问题内容: 我正在尝试将字符串“ 20091229050936”转换为“ 2009年12月29日(UTC)05:09” 给 显然,我犯了一个错误:时间是错误的,它是日期时间对象!它有一个日期 和 一个时间部分! 给 我如何将字符串转换为格式化的日期字符串? 问题答案: 返回一个; 接受作为可选参数: 给
我在presto上,把日期格式化为varchar,看起来像- 我如何转换这个?
我在一个JSON文件中记录一些东西,我有一个datetime对象,我把它转换成一个字符串,这样我就可以在JSON中记录它(它不接受datetime对象)。 我的问题是如何将datetime字符串转换回datetime对象。我知道strptime,我只是不知道什么格式会使它与其他datetime.now对象兼容。 每当我尝试使用strtime时,我都会使用格式,并出现以下错误: 那么,默认datet