【问题标题】:Convert string timestamp "yyyy-mm-dd'T'HH:mm:ss.SSS+ZZ:ZZ" to string timestamp "yyyy-mm-dd'T'HH:mm:ss.SSSZ" [duplicate]将字符串时间戳“yyyy-mm-dd'T'HH:mm:ss.SSS+ZZ:ZZ”转换为字符串时间戳“yyyy-mm-dd'T'HH:mm:ss.SSSZ”[重复]
【发布时间】:2022-02-18 14:12:14
【问题描述】:

例如,如果我有字符串时间戳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 和 java.util.Date 类。使用较新的 java.time API
  • 你明白你的两个字符串2022-01-12T19:41:27.000+00:002022-01-12T19:41:27.000Z 是同一个意思吗?末尾的 Zstandard 的缩写 +00:00,两者都表示与 UTC 的偏移量为零时分秒。此外,如果小数秒为零,则无需显示.000
  • OffsetDateTime.parse( "2022-01-12T19:41:27.000+00:00" ).toString()

标签: java simpledateformat date-format dateformatter instant


【解决方案1】:

你需要一个 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

【讨论】:

    猜你喜欢
    • 2022-01-08
    • 1970-01-01
    • 2022-12-07
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    • 2020-10-11
    • 1970-01-01
    • 2021-03-11
    相关资源
    最近更新 更多