当前位置: 首页 > 知识库问答 >
问题:

OffsetDateTime-打印偏移量而不是Z

司徒寒
2023-03-14

我有这个代码

String date = "2019-04-22T00:00:00+02:00";

OffsetDateTime odt = OffsetDateTime
      .parse(date, DateTimeFormatter.ISO_OFFSET_DATE_TIME)                             
      .withOffsetSameInstant(ZoneOffset.of("+00:00"));

System.out.println(odt);

此打印:2019-04-21T22:00Z

如何打印?用偏移量代替Z。

共有2个答案

时才俊
2023-03-14

我的版本是:

    DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ssxxx");

    String date = "2019-04-22T00:00:00+02:00";

    OffsetDateTime odt = OffsetDateTime
          .parse(date)                             
          .withOffsetSameInstant(ZoneOffset.UTC);

    System.out.println(odt.format(outputFormatter));

输出是期望的:

2019-04-21T22:00:00 00:00

toString()以不需要的格式提供输出时,答案是使用日期时间格式设置器将其格式化为所需的格式。格式模式字符串中的小写xxx产生以小时和分钟为单位的偏移量,如图所示,当偏移量为0时也是如此。

OffsetDateTime。toString()不会生成您想要的格式,OffsetDateTime仍然能够在没有任何显式格式化程序的情况下对其进行解析。所以在我的代码版本中,我忽略了它。

已经为ZoneOffset声明了一个常数。of(“00:00”),我更喜欢使用:区域偏移。UTC。

孔俊友
2023-03-14

在标准库中,没有一个静态的DateTimeFormatter可以这样做。它们要么默认为Z,要么默认为GMT。

要实现无偏移的00:00,您必须构建自己的日期时间格式。

ZonedDateTime now = ZonedDateTime.now(ZoneId.of("UTC"));

DateTimeFormatter dateTimeFormatter = new DateTimeFormatterBuilder()
        .append(ISO_LOCAL_DATE_TIME) // use the existing formatter for date time
        .appendOffset("+HH:MM", "+00:00") // set 'noOffsetText' to desired '+00:00'
        .toFormatter();

System.out.println(now.format(dateTimeFormatter)); // 2019-12-20T17:58:06.847274+00:00
 类似资料:
  • 为什么实际主题中的偏移值与同一主题中的偏移值不同?PFB偏移位置以及使用的命令。 我错过了什么?

  • 我从数据库中读取一个字符串值,并通过servlet将其打印到jsp页面上。问题是,在Jsp上,如果数据库中的字段为空,就会打印出字符串“null”。如果数据库中的值为空,我需要一个空白的编辑框。 我的数据库访问对象: 我的Servlet: 我的Jsp: 我的数据库是Oracle 11g,浏览器是FireFox。

  • 在我们的android应用程序中,我们可以成功地将图像打印到P4T打印机。我们使用pcx cpcl命令与其他收据文本内联打印图像。在打印收据之前,我们使用zebra sdk将图像上传到打印机内存。我们让zebra首先将我们的位图转换为ZebraImage,然后上传它。在P4T上,这会产生一个。然后我们在cpcl标签中引用的PCX文件。示例: 打印机配置: 在android应用程序中: cpcl格式

  • oracle DB是否能够返回时区区域,例如欧洲/伦敦,而不仅仅是偏移?我想知道服务器所在的地区名称。 从DUAL中选择SYSTIMESTAMP参数;返回日期、时间和偏移量: 从dual中选择DBTIMEZONE;返回偏移量:

  • 问题内容: 是否可以跳过X个第一行,并在一个查询中选择所有其他行?像那样: 它将选择:pqr,stu,vwx,yz 我尝试使用LIMIT和OFFSET完成此操作,但是问题是表是动态的,而且我不知道应该输入哪个LIMIT(我不知道表中有多少行)。 问题答案: 如果只需要最后N行,请尝试以下操作: 这会根据的顺序为您提供最后几条记录。 您可以使用自动递增的主键(希望有一个主键)来确定行的顺序(如果无法

  • 当我尝试将从java.time转换为时,我希望得到的能够用本地时区更新。因此,如果我的为,并且我的本地时区是UTC+2,我希望LocalDateTime为,但我得到的是。我使用具有的方法转换它。它似乎只是截断了日期,去掉了偏移部分,而没有调整时间。 因此,我试图找到一种方法来获得来表示本地日期时间,同时考虑区域偏移量。按照示例,我希望获得