当前位置: 首页 > 知识库问答 >
问题:

尝试使用DateTimeFormatter解析just time

暨高洁
2023-03-14

使用DateTimeFormatter仅解析LocalTime变量的“Time of Day”时出现问题。尝试了几种不同的格式,但没有看到我缺少了什么(我在想,既然我使用了DateTimeFormatter,我就需要一个date组件,但我只使用了LocalDate就没问题了,而且文档说它支持LocalTime)。

提前感谢任何帮助/链接,以确定我的错误导致异常

使用此SSCCE复制:

import java.awt.*;
import java.time.*;
import java.time.format.*;

public class SSCCE {
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable(){          
            @Override
            public void run() {
                String word = "";

                word = "1200am";
//              System.out.println(LocalTime.parse(word.toLowerCase(),  DateTimeFormatter.ISO_LOCAL_TIME).toString());
                System.out.println(LocalTime.parse(word.toLowerCase(), DateTimeFormatter.ofPattern("hhmma")).toString());
//              System.out.println(LocalTime.parse(word.toLowerCase(), DateTimeFormatter.ofPattern("hmma")).toString());
//              System.out.println(LocalTime.parse(word.toLowerCase(), DateTimeFormatter.ofPattern("HHmma")).toString());
//              System.out.println(LocalTime.parse(word.toLowerCase(), DateTimeFormatter.ofPattern("Hmma")).toString());
//              System.out.println(LocalTime.parse((CharSequence)word.toLowerCase(), DateTimeFormatter.ofPattern("hhma")).toString());

            word = "8PM";
            System.out.println(LocalTime.parse(word.toLowerCase(), DateTimeFormatter.ISO_LOCAL_TIME).toString());           
            }
        });
    }
}

...我得到了这个堆栈跟踪:

线程“AWT-EventQueue-0”中的异常java.time.format.DateTimeParseException:在索引4处的java.time.format.DateTimeFormatter.ParsereSolved0(DateTimeFormatter.Java:194 7)在java.time.format.DateTimeFormatter.Parse(DateTimeFormatter.Java:1849)在java.time.LocalTime.Parse(LocalTime.Java:441)在SSCE$1处,无法解析文本“1200AM”。运行(sscce.java:14)在tchThread.java:11 6)在java.awt.EventDispatchThread.PumpEventsforHierarchy(EventDispatchThread.java:105)在java.awt.EventDispatchThread.PumpEvents(EventDispatchThread.java:101)在java.awt.EventDispatchThread.PumpEvents(EventDispatchThread.java:93)在java.awt.EventDispatchThread.Run(EventDispatchThread.java:82)

共有1个答案

西门胜涝
2023-03-14

您应该将其转换为大写而不是小写,因为DateTimeFormatter将只解析大写的AM/PM:

System.out.println(LocalTime.parse(word.toUpperCase(),
        DateTimeFormatter.ofPattern("hhmma")).toString());

// will print 00:00
 类似资料:
  • 错误: 线程“main”java.time.format.dateTimeParseException:无法解析文本“Tue 21 May”:无法从TemporalAccessor获取LocalDate:{DayOfWeek=2,DayOfMonth=21,MonthOfYear=5},类型为java.time.format.dateTimeFormatter.createError(dateTi

  • 问题内容: 我正在尝试使用下面的确切结构来解析JSON文件。 我正在使用以下jQuery函数: 我做错什么了吗? 问题答案: 您没有访问正确的元素。不指向,它指向最外面的元素(是它的属性)。该数组包含在: 进一步说明: 如果仅访问属性一次,则无需创建局部变量(但当然,它可能更易读)。 虽然连续使用分号是没有错的,但这是不必要和令人困惑的(至少这使我感到困惑;)

  • 问题内容: 我正在尝试使用Java 8 将格式化的字符串解析为对象。但是,我在解析某些输入字符串时遇到了一些问题。当我的输入字符串具有“ AM”时,它将正确解析,但是当我的字符串具有“ PM”时,它将引发异常。这是一个简单的例子: 输出: 因此可以正确解析,但是会在消息中抛出DateTimeParseException: 但是,这就是我遇到的问题。.我不太确定该错误的确切含义,但这绝对与输入字符串

  • 线程“main”java.time.format.DateTimeParseException中出现异常:无法在索引16处解析文本“14:30 Sat 05 May” 任何帮助都很感激。

  • 但这就是我卡住的地方..我不确定这个错误到底是什么意思,但它肯定与输入字符串的AM/PM部分有关。我也尝试搜索类似的错误,但我没有找到任何东西。我有一种感觉,我可能在定义格式化程序模式时犯了一个简单的错误,但我卡住了。任何帮助都将不胜感激!

  • 我需要将日期时间解析为两种不同格式的字符串: 19861221235959Z 1986-12-21T23:59:59Z 以下dateTimeForware模式正确解析第一种日期字符串 但是第二个失败了,因为破折号、冒号和T不是预期的。 我尝试使用以下可选部分: 出乎意料的是,这会解析第二种日期字符串(带破折号的),而不是第一种,抛出一个 这就好像可选部分没有被评估为可选的。。。