Rod*_*aki 7 java timezone simpledateformat
我知道有关于此的几个问题.但是我遇到了特定日期模式的问题.这是一个例子:
20130401100000[-03:EST]
Run Code Online (Sandbox Code Playgroud)
我跟你说话是-03因为根据SimpleDateFormat文件它应该有4位数.我得到的最接近的模式是:
yyyyMMddHHmmss'['Z':'z']'
Run Code Online (Sandbox Code Playgroud)
但由于2位数它只是不起作用.这是我用于测试的代码示例:
public static void main(String[] args) throws ParseException {
String input = "20130401100000[-03:EST]";
DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss'['Z':'z']'");
df.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(df.format(new Date()));
System.out.println(df.parse(input));
}
Run Code Online (Sandbox Code Playgroud)
当我打印new Date()我得到这个:
20130528155734[+0000:GMT]
Run Code Online (Sandbox Code Playgroud)
但是当我尝试解析时,input我得到以下异常:
Exception in thread "main" java.text.ParseException: Unparseable date: "20130401100000[-03:EST]"
at java.text.DateFormat.parse(DateFormat.java:337)
at Teste.main(Teste.java:17)
Run Code Online (Sandbox Code Playgroud)
您可以使用以下方法更正格式:
public static void main(String[] args) throws ParseException {
String input = "20130401100000[-03:EST]";
DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss'['Z':'z']'");
df.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(df.format(new Date()));
input = input.replace(":","00:");
System.out.println(df.parse(input));
}
Run Code Online (Sandbox Code Playgroud)
如果您将格式正确的日期与格式错误的日期混合在一起,您可以使用:
input = input.replaceAll("(\\[[+-]\\d{2}):","$100:");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1260 次 |
| 最近记录: |