gpt4 book ai didi

java simpledateformat解析字符串错误

转载 作者:行者123 更新时间:2023-12-01 05:02:11 27 4
gpt4 key购买 nike

//这是我的代码

 public static void main(String[] args) {

String a = "19900416000000";
String b = "19900415000000";
DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
df.setLenient(false);

try {
df.parse(a);
} catch (ParseException e) {
System.out.println("a parse error");
e.printStackTrace();
}

try {
df.parse(b);
}catch (ParseException e){
System.out.println("b parse error");
e.printStackTrace();
}

//我得到一个错误,像这样

b parse error
java.text.ParseException: Unparseable date: "19900415000000"
at java.text.DateFormat.parse(DateFormat.java:366)
at org.suanhua.elasticsearch.client.ETLTest.main(ETLTest.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

那么,a 和 b 有什么不同呢?为什么 parse(b) 会出错?

//这是我的导入

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

//在intellij下使用jdk8

最佳答案

您的问题似乎与时区有关。

在我的 jdk1.8.0_91 安装中测试所有时区。

String a = "19900416000000";
String b = "19900415000000";
DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
df.setLenient(false);

for (String id : TimeZone.getAvailableIDs()) {
df.setTimeZone(TimeZone.getTimeZone(id));
try {
df.parse(a);
} catch (ParseException e) {
System.out.println(id + ": " + e);
}
try {
df.parse(b);
} catch (ParseException e) {
System.out.println(id + ": " + e);
}
}

输出

Asia/Chongqing: java.text.ParseException: Unparseable date: "19900415000000"
Asia/Chungking: java.text.ParseException: Unparseable date: "19900415000000"
Asia/Harbin: java.text.ParseException: Unparseable date: "19900415000000"
Asia/Shanghai: java.text.ParseException: Unparseable date: "19900415000000"
PRC: java.text.ParseException: Unparseable date: "19900415000000"
CTT: java.text.ParseException: Unparseable date: "19900415000000"

如果您的默认时区是其中任何一个,那么它会失败,因为 1990 年 4 月 15 日的午夜不存在,因为那是夏令时开始的时间,即在午夜,时钟被设置为凌晨 1 点, 所以午夜不存在。

关于java simpledateformat解析字符串错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44044603/

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