【发布时间】:2018-10-02 10:13:15
【问题描述】:
我正在尝试解析迄今为止的字符串。日期格式为的字符串 "dd-MMM-yyyy Z" 和具有值 "12-DEC-2018 ET" 的字符串。它给出了错误 java.text.ParseException:无法解析的日期:“12-DEC-2018 ET”。
相同的代码适用于值为“12-DEC-2018 IST”的字符串。 下面是代码sn-p:
public static void main(String[] args) throws ParseException {
String dateInputIST ="12-DEC-2018 IST";
String dateInputET ="12-DEC-2018 ET";
SimpleDateFormat sdfmt1 = new SimpleDateFormat("dd-MMM-yyyy Z");
SimpleDateFormat sdfmt2= new SimpleDateFormat("dd/MM/yyyy");
Date dDate = sdfmt1.parse( dateInputIST );
String strOutput = sdfmt2.format( dDate );
System.out.println(strOutput);
Date etDate = sdfmt1.parse(dateInputET);
strOutput = sdfmt2.format(etDate);
System.out.println(strOutput);
}
有人可以帮忙吗?我需要解析任何时区的时间。 谢谢, 纳文
【问题讨论】:
-
你的意思是
EDT而不是ET? -
时区缩写的解析在任何情况下都是脆弱的。我至少不知道
IST是否会被解析为冰岛、爱尔兰、以色列或印度的时间。因此,如果可以的话,请避免依赖它们。此外,当东部时间是在标准时间和 EDT dirung 夏季使用 EST 正确指定时区时。 -
我建议你避免使用
SimpleDateFormat类。它不仅过时了,而且出了名的麻烦。今天我们在java.time, the modern Java date and time API 中做得更好。 -
在我的计算机上,您的程序将您的 IST 字符串解析为 Tue Dec 11 23:00:00 CET 2018,其格式为
11/12/2018。日期提前一天是预期行为吗? -
@navin kumar :有任何答案对你有用吗?如果是,请考虑接受/支持他们。 What should I do when someone answers my question?
标签: java date timezone date-parsing