我在将字符串格式化为ZonedDateTime时遇到问题。< br >我的客户希望日期采用ddMMyyyyhhmmss之类的格式,没有分隔符之类的东西。< br >这是我到目前为止所做的
import java.time.format.DateTimeFormatter;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
public class MyClass {
public static void main(String args[]) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("ddMMyyyyhhmmss");
String test = formatter
.format(ZonedDateTime.now()).toString();
System.out.println(test);
ZonedDateTime a = ZonedDateTime.parse(test,formatter);
System.out.println(a.toString());
}
}
当它正确生成字符串时,错误发生在创建LocalDateTime变量的解析过程中
28032019100707
Exception in thread "main" java.time.format.DateTimeParseException: Text '28032019100707' could not be parsed: Unable to obtain ZonedDateTime from TemporalAccessor: {MilliOfSecond=0, MinuteOfHour=7, HourOfAmPm=10, NanoOfSecond=0, MicroOfSecond=0, SecondOfMinute=7},ISO resolved to 2019-03-28 of type java.time.format.Parsed
at java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:1920)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1855)
at java.time.ZonedDateTime.parse(ZonedDateTime.java:597)
at MyClass.main(MyClass.java:14)
Caused by: java.time.DateTimeException: Unable to obtain ZonedDateTime from TemporalAccessor: {MilliOfSecond=0, MinuteOfHour=7, HourOfAmPm=10, NanoOfSecond=0, MicroOfSecond=0, SecondOfMinute=7},ISO resolved to 2019-03-28 of type java.time.format.Parsed
at java.time.ZonedDateTime.from(ZonedDateTime.java:565)
at java.time.format.Parsed.query(Parsed.java:226)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
... 2 more
Caused by: java.time.DateTimeException: Unable to obtain ZoneId from TemporalAccessor: {MilliOfSecond=0, MinuteOfHour=7, HourOfAmPm=10, NanoOfSecond=0, MicroOfSecond=0, SecondOfMinute=7},ISO resolved to 2019-03-28 of type java.time.format.Parsed
at java.time.ZoneId.from(ZoneId.java:466)
at java.time.ZonedDateTime.from(ZonedDateTime.java:553)
... 4 more
Command exited with non-zero status 1
在SO上搜索,我看到同一问题的一些答案建议使用LocalDateTime类作为中间类,然后解析为ZonedDateTime,但它仍然不起作用,引发了同样的错误。我还尝试使用此过程更改初始化DateTimeForware的方式
DateTimeFormatter formatter = new DateTimeFormatterBuilder().appendPattern("ddMMyyyyhhmmss")
.toFormatter()
.withZone(ZoneId.systemDefault());
但它仍然不起作用。我知道我肯定错过了一些愚蠢的东西,但我看不出什么。任何人都可以为我指出正确的方向吗?
在您解析的字符串中,没有关于TimeZone的信息,因此格式化程序应该如何知道如何转换为ZonedDateTime?
您要么需要在字符串中包含TimeZone信息,要么使用另一个Object将其解析为没有TimeZone信息的对象,然后将其传输到您需要的区域。
< code>ddMMyyyyhhmmss不包含任何区域信息,它不是< code>ZonedDateTime,它应该是< code>LocalDateTime。
您需要:
String test = ZonedDateTime.now().format(formatter);
我正在尝试格式化我的日期和时间。 我的代码 its显示错误未处理异常:格式异常:无效日期格式 现在它看起来像这样
我需要将日期/时间从2014年8月20日15:30:00更改为2014年8月20日下午3:30 这可以使用javascript的日期对象来完成吗?
有人帮忙吗?谢谢
将选定时区中的当前时间作为日期对象的最佳方法是什么。我使用下面的代码在react Native中获取选定时区的当前时间。 例如new Date().toLocaleString('en-us',{timezone:'indian/christmas'})
我正在颤振中创建一个表单,其中一个字段是出生日期。我使用了日期时间选择器来选择日期并显示输出。我想格式化我得到的日期,只显示月份、日期和年份。以下是当前的日期格式。我希望它的格式为。这是我想出的代码