从 joda DateTime java 中剥离秒数

Strip off seconds from joda DateTime java

我有一个org.joda.time.DateTime对象,它的时区是“Asia/Shanghai”(即+08:00),它的日期时间值是“2021-06-22T22:30:25+08:00"。我想在不更改其原始时区 的情况下从中剥离秒数。预期值为“2021-06-22T22:30:00+08:00”。我该如何做条带?

jodatime?现在是 2021 年。只需使用 java.time。这是 jodatime,稍作更新,并融入核心 java 库。

无论如何,无论我们谈论的是 jodatime 还是 java.time,数据结构都是不可变的,因此您想要的是不可能的。你不能剥掉任何东西。您可以做的是创建新的 DateTime 对象。

myOriginalObject.withSecondsOfMinute(0) 完成任务。 Returns 具有 00 秒的新 DT 实例。

    DateTimeZone zone = DateTimeZone.forID("Asia/Shanghai");
    DateTime dt = new DateTime(2021, 6, 22, 22, 30, 25, zone);

    dt = dt.withMillisOfSecond(0).withSecondOfMinute(0);
    
    System.out.println(dt);
    System.out.println("Is time zone changed? It is now " + dt.getZone());

输出:

2021-06-22T22:30:00.000+08:00
Is time zone changed? It is now Asia/Shanghai

额外引述:Joda-Time 主页说:

Note that Joda-Time is considered to be a largely “finished” project. No major enhancements are planned. If using Java SE 8, please migrate to java.time (JSR-310).

Link: Joda-Time home

指的是 Ole V.V。和 rzwitserloot 的回答,以下解决了我的问题

dateTime = new DateTime(dateTime).withMillisOfSecond(0).withSecondOfMinute(0);

dateTime 的类型是 org.joda.time.DateTime