gpt4 book ai didi

java - 无法在 Java 8 中使用 DateTimeFormatter 和 ZonedDateTime 从 TemporalAccessor 获取 ZonedDateTime

转载 作者:IT老高 更新时间:2023-10-28 21:02:54 29 4
gpt4 key购买 nike

我最近迁移到 Java 8,希望能更轻松地处理本地和分区时间。

但是,在我看来,在解析简单日期时,我遇到了一个简单的问题。

public static ZonedDateTime convertirAFecha(String fecha) throws Exception {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
ConstantesFechas.FORMATO_DIA).withZone(
obtenerZonaHorariaServidor());

ZonedDateTime resultado = ZonedDateTime.parse(fecha, formatter);
return resultado;
}

就我而言:

  • fecha 是 '15/06/2014'
  • ConstantesFechas.FORMATO_DIA 为 'dd/MM/yyyy'
  • obtenerZonaHorariaServidor 返回 ZoneId.systemDefault()

所以,这是一个简单的例子。但是,解析会抛出此异常:

java.time.format.DateTimeParseException: Text '15/06/2014' could notbe parsed: Unable to obtain ZonedDateTime from TemporalAccessor:{},ISO resolved to 2014-06-15 of type java.time.format.Parsed

有什么建议吗?我一直在尝试解析和使用 TemporalAccesor 的不同组合,但到目前为止没有任何运气。

最佳答案

这不起作用,因为您的输入(和您的格式化程序)没有时区信息。一种简单的方法是首先将您的日期解析为 LocalDate(没有时间或时区信息),然后创建一个 ZonedDateTime:

public static ZonedDateTime convertirAFecha(String fecha) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date = LocalDate.parse(fecha, formatter);

ZonedDateTime resultado = date.atStartOfDay(ZoneId.systemDefault());
return resultado;
}

关于java - 无法在 Java 8 中使用 DateTimeFormatter 和 ZonedDateTime 从 TemporalAccessor 获取 ZonedDateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23596530/

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