【问题标题】:How to change the formate of TImeStamp in Java?如何在 Java 中更改 TImeStamp 的格式?
【发布时间】:2021-09-21 02:09:36
【问题描述】:

我在 Retrofit 中遇到了 post 对象的问题。 我需要做的是使 TimeStamp 变量的格式为

yyyy-MM-dd'T'HH:mm:ss.SSS'Z'

但是,我的代码生成的时间戳

Timestamp timestamp = new Timestamp(new Date().getTime());

给出2021-07-11T16:53:45.604+00:00 转换为Jul 11, 2021 12:53:44 PM 的格式

我查看了各种文档,但找不到将其转换为其他格式的方法。

有什么方法可以将我的 TimeStamp 变量格式更改为yyyy-MM-dd'T'HH:mm:ss.SSS'Z'

谢谢!

【问题讨论】:

  • 您使用的是哪个 Java 版本? 1.7 还是 1.8?
  • @Vishal 我目前正在使用 JDK 9
  • 不,Timestamp 没有,因为不能有格式。这回答了你的问题了吗? Timestamp comes with .0 at the end
  • 我很困惑你提到的格式来自哪里。您发布的代码肯定不会给他们。
  • 我建议你不要使用Timestamp。该课程设计不良且早已过时。而是使用来自java.time, the modern Java date and time APIInstant

标签: java mysql timestamp retrofit


【解决方案1】:

tl;博士

从有问题的遗留类转换为现代类,然后生成标准 ISO 8601 格式的文本。

myTimestamp.toInstant().toString() 

或以 UTC 格式捕捉当前时刻。

Instant.now().toString()

详情

java.sql.Timestamp 对象没有“格式”。 Timestamp 类代表一个时刻,而不是文本。

您正在使用糟糕的日期时间类,这些类在几年前被 JSR 310 中定义的现代 java.time 类所取代。

java.time.Instant

如果您手头有一个Timestamp 对象,请转换为它的替换对象java.time.Instant。寻找添加到旧类的新转换方法。

Instant instant = myTimestamp.toInstant() ;

使用Instant.now() 捕捉以UTC 显示的当前时刻,与UTC 的偏移量为零时分秒。

Instant instant = Instant.now() ;

生成文本

您想要的格式符合ISO 8601 标准。 java.time 类在解析/生成字符串时默认使用这些标准格式。

String output = instant.toString() ;  // Generate text in standard ISO 8601 format.

然后解析。

Instant instant = Instant.parse( "2021-07-11T16:53:45.604Z" ) ;

Z不是装饰

顺便说一下,关于您的格式模式,yyyy-MM-dd'T'HH:mm:ss.SSS'Z'从不Z 周围加上单引号。 Z 代表重要信息,即与 UTC 的偏移量。你的引号杀死了它,把它变成了一个单纯的字符串文字。

【讨论】:

    【解决方案2】:

    如果你使用的是Java 7,你可以参考SimpleDateFormat来格式化日期,如下所示

    Timestamp timestamp = new Timestamp(new Date().getTime());
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
    String format = simpleDateFormat.format(timestamp);
    System.out.println(format);
    

    【讨论】:

    • OP 使用的是 Java 9。而 SimpleDateFormat 类是一个臭名昭著的类麻烦制造者并且早已过时。
    • @Ole 是的,该解决方案适用于 1.7
    猜你喜欢
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    相关资源
    最近更新 更多