有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java这种情况下正确的日期格式是什么?

我一直在尝试将字符串解析为日期,但转换不起作用

例如,我从Web服务中检索了这些字符串

Dec 9, 2016 4:36:00 PM
Jan 12, 2017 11:36:15 AM

我尝试过使用这些格式,但是转换失败了

MMM d, yyyy HH:mm:ss aaa
MMM d, yyyy hh:mm:ss a

我错在哪里

我得到了这个例外
java.text.ParseException: Unparseable date: "Dec 9, 2016 4:36:00 PM"


共 (1) 个答案

  1. # 1 楼答案

    这只是@C.p.O答案的一个变体,使用的模式略有不同

    import java.time.LocalDateTime;
    import java.time.format.DateTimeFormatter;
    
    import org.junit.Test;
    
    public class blam
    {
        private static final String VALUE1 = "Dec 9, 2016 4:36:00 PM";
        private static final String VALUE2 = "Jan 12, 2017 11:36:15 AM";
    
        @Test
        public void test()
        {
            DateTimeFormatter dateTimeFormatter;
            LocalDateTime value;
    
            dateTimeFormatter = DateTimeFormatter.ofPattern("MMM d, u h:m:s a");
    
            value = LocalDateTime.parse(VALUE1, dateTimeFormatter);
            System.out.println("value1. " + VALUE1 + " becomes: " + value);
    
    
            value = LocalDateTime.parse(VALUE2, dateTimeFormatter);
            System.out.println("value2. " + VALUE2 + " becomes: " + value);
        }
    }
    

    注意:

    • y是“时代之年”
    • u是“年”
    • 嗯,是必需的。“M”和“MM”都不适用于你的情况
    • 我更喜欢“s”而不是“ss”,因为“s”将解析2和12,但“ss”将无法解析“2”

    我不知道用“y”代替“u”的真正影响