日期函数正在修剪秒数,其中秒数为 00

Date Function is trimming seconds where seconds is 00

OffsetDateTime odtB = OffsetDateTime.parse("2019-02-02T13:55:00Z");
odtB.toString()

打印 2019-02-02T13:55 作为输出。因为这个我的转换函数抛出错误!!

SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM\''YY HH:mm aa");
String parsedDate = odtB.format(otdB);

如何在秒为 00 时停止 OffsetDateTime 或任何其他 Java DateTime class 调整秒?

如果你使用 java.time.LocalDateTime(你应该从 Java 8 开始),你可以使用不同的 DateTimeFormatters,你可以配置(给他们一个模式)不修剪尾随零。请参阅以下示例,使用您的日期 String 并稍微调整一下模式:

LocalDateTime ldt = LocalDateTime.parse("2019-02-02T13:55:00Z", DateTimeFormatter.ISO_DATE_TIME);
System.out.println(ldt.format(DateTimeFormatter.ofPattern("dd-MMM\''YY HH:mm:ss")));

这将打印 02-Feb'19 13:55:00,希望这就是您想要的。

SimpleDateFormat 来自一种陈旧过时的日期处理方式。它也不是线程安全的并且有很多其他问题。换句话说,不要使用它。您需要使用 DateTimeFormatter 请阅读 javadoc(提供的 link)。它给出了如何使用它的详细说明。但是,您的问题的原因是在您的格式掩码中您缺少占位符几秒钟,因此当您的 String 有几秒钟时它不符合您的格式。将格式更改为 dd-MMM-YY HH:mm:ss aa 强调 "ss" - 缺少秒占位符,它将起作用

在java8以后就不用SimpleDateFormat了,很麻烦

我建议使用ISO_OFFSET_DATE_TIME:

The ISO date-time formatter that formats or parses a date-time with an offset, such as '2011-12-03T10:15:30+01:00'.

示例:

import java.util.*;
import java.time.*;
import java.time.format.*;

public class HelloWorld{

     public static void main(String []args){
        OffsetDateTime odtB = OffsetDateTime.parse("2019-02-02T13:55:00Z");
        DateTimeFormatter f = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
        System.out.print(f.format(odtB)); // 2019-02-02T13:55:00Z
     }
}