为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

翻阅古今 2022-06-04 17:22:36
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 类修剪秒数?
查看完整描述

3 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

在java8中,你就不需要SimpleDateFormat了,很麻烦。


我建议使用ISO_OFFSET_DATE_TIME:


ISO 日期时间格式化程序,用于格式化或解析带有偏移量的日期时间,例如“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

     }

}


查看完整回答
反对 回复 2022-06-04
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

SimpleDateFormat来自使用 Dates 的古老而过时的方式。它也不是线程安全的,并且还有很多其他问题。换句话说,不要使用它。您需要使用DateTimeFormatter请阅读 javadoc(提供的链接)。它详细解释了如何使用它。但是,您的问题的原因是在您的格式掩码中,您缺少占位符几秒钟,因此当您的字符串有几秒钟时,它不符合您的格式。将格式更改为dd-MMM-YY HH:mm:ss aa强调“ss” - 缺少秒占位符,它将起作用



查看完整回答
反对 回复 2022-06-04
?
HUX布斯

TA贡献1876条经验 获得超6个赞

如果您使用java.time.LocalDateTime(从 Java 8 开始就应该使用),您可以使用不同DateTimeFormatter的 s,您可以配置(给它们一个模式)以不修剪尾随零。请参阅以下示例,使用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,希望这是您想要的。


查看完整回答
反对 回复 2022-06-04
  • 3 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信