将字符串时间戳“yyyy-mm-dd'T'HH:mm:ss.SSS+ZZ:ZZ”转换为字符串时间戳“yyyy-mm-dd'T'HH:mm:ss.SSSZ”[重复]

问题描述 投票:0回答:1

例如,如果我有字符串时间戳

2022-01-12T19:41:27.000+00:00
,我想得到
2022-01-12T19:41:27.000Z

我想确保我提供一个解决方案,将来可以采用格式“yyyy-mm-dd'T'HH:mm:ss.SSS+ZZ:ZZ”或任何其他输入格式的字符串时间戳,但将始终返回一个标准输出,即“yyyy-mm-dd'T'HH:mm:ss.SSSZ”。

到目前为止,我想出了:

String ts = "2022-01-12T19:41:27.000+00:00";
Date date = new SimpleDateFormat("yyyy-mm-dd'T'HH:mm:ss.SSS+ZZ:ZZ", 
Locale.US).parse(ts);
System.out.println(date);

Timestamp tsp = new Timestamp(date.getTime()); 
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-mm-dd'T'HH:mm:ss.SSSZ");
String str = formatter.format(tsp);
System.out.println(str);

但是我遇到了以下异常:

error: unreported exception ParseException; must be caught or declared to be thrown
Date date = new SimpleDateFormat("yyyy-mm-dd'T'HH:mm:ss.SSS+ZZ:ZZ", Locale.US).parse(ts);
java simpledateformat date-format dateformatter instant
1个回答
0
投票

您的代码周围需要一个

try
-
catch
块:

try {
    String ts = "2022-01-12T19:41:27.000+00:00";
    Date date = new SimpleDateFormat("yyyy-mm-dd'T'HH:mm:ss.SSS+ZZ:ZZ", 
    Locale.US).parse(ts);
    System.out.println(date);
    
    Timestamp tsp = new Timestamp(date.getTime()); 
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-mm-dd'T'HH:mm:ss.SSSZ");
    String str = formatter.format(tsp);
    System.out.println(str);
} catch (ParseException e){
     // handleException
}

或者你必须扩展你的方法

throws ParseException
© www.soinside.com 2019 - 2024. All rights reserved.