当前位置: 首页 > 面试题库 >

在Java中,我需要以这种格式定义日期1999-05-31T13:20:00-05:00

谢泉
2023-03-14
问题内容

我需要以这种格式定义日期 1999-05-31T13:20:00-05:00

我正在使用下面的代码

SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-DD'T'hh:mm:ssZ");
sdf.setTimeZone(TimeZone.getTimeZone("EST"));

String date = sdf.format(new Date());
System.out.println(date);

但它以格式生成日期2017-04-117T08:28:46-0500(时区缺少分号)

定义日期后,我必须创建一个具有相同日期的XMLGregorianCalendar实例。


问题答案:

我很惊讶您在搜索时找不到答案。无论如何,这很容易。不过,首先要注意两个词:

  • 跳过三个字母的时区缩写。许多是模棱两可的。虽然我认为EST仅表示东部标准时间,但这不是一个完整的时区,因为(大部分?)该时区现在位于EDT上,这并不清楚您想要什么结果。
  • 如果有什么办法可以跳过老式类SimpleDateFormatTimeZoneDatejava.time通常,使用新类要好得多。

您所要求的格式正是DateTimeFormatter.ISO_OFFSET_DATE_TIME给您的。如果您打算将时间格式化为适合东部时区的用户,请使用:

    ZonedDateTime now = ZonedDateTime.now(ZoneId.of("America/New_York"))
            .truncatedTo(ChronoUnit.SECONDS);
    System.out.println(now.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME));

请注意使用明确的时区ID和提到的格式化程序。如果有的话,该格式将打印毫秒(甚至更小),这是您不需要的。所以我有点作弊:我将时间缩短到整秒。现在,打印出类似以下内容:

2017-04-27T10:11:33-04:00

相反,如果您想要offset -05:00,那就更简单了:

    OffsetDateTime now = OffsetDateTime.now(ZoneOffset.ofHours(-5))
            .truncatedTo(ChronoUnit.SECONDS);
    System.out.println(now);

这将以相同的格式打印内容,但具有所需的偏移量:

2017-04-27T09:11:33-05:00

toString方法OffsetDateTime为您提供所需的格式。当然,如果愿意,可以使用与以前相同的格式化程序。

如果将截断到几秒钟对您的口味有太多欺骗,那么您当然可以使用没有毫秒的格式化程序:

    DateTimeFormatter isoNoSeconds = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ssXXX");
    System.out.println(now.format(isoNoSeconds));

这将同时适用于a ZonedDateTime和an OffsetDateTime,即适用于上述两个摘要。



 类似资料:
  • 在线机器人 【新增】客户回复内容新增接口校验 在多轮会话中,对客户回复内容增加了接口校验的方式,用户可以通过选择接口的入参作为校验的标准。客户输入的内容符合入参数据视为正确回复,对不符合入参数据的回复发送错误提示。 机器人提问前置条件/答案输出条件:原「属性类别]条件变更为「客户输入检查」,客户输入检查内容类型包含属性名词,固定参数,接口校验。 【新增】内部知识库导出增加纯文本答案 增加了纯文本列

  • 我想在MySQL中允许零日期。我已将更改为。 我已经在中更改了它。 然而,当我尝试插入数据时,我得到了错误, 数据截断:不正确的datetime值:“0000-00-00 00:00:00” MySQL版本为5.7.18。 这方面的任何想法都将大有帮助。

  • 问题内容: 我尝试通过以下方式转换此日期: 但是我得到了: 问题答案: “ -0500”是UTC的偏移量,采用RFC822格式。您只想要,没有。 下表列出了Android 文档 : 符号:Z 含义:时区(RFC 822) 种类:(时区) 范例::-0800 :GMT-08:00 :-08:00 当然,我也将亲自指定语言环境:这是一种机器可读格式,而不是面向人类的格式,因此我通常会指定:

  • 问题内容: 在Java中解析此日期格式的最简单方法是什么? 我在Java中阅读了DateFormat api,却找不到采用字符串甚至这种类型的日期格式作为要解析的参数的方法?当我说的是解析时,我的意思是我想将“日期(月,日,年)”,“时间”和“时区”提取到单独的字符串对象中。 提前致谢 问题答案: 另一个答案是,由于您似乎只专注于拆开(恕我直言,这不是一个好主意)。我们假设字符串是有效的ISO86

  • 问题内容: 我正在管理一个来自Alfresco Properties的日期,并且该日期处于指定的日期(2010年7月13日星期二00:00:00 CEST),我需要将其转换为Java日期…我四处查看并发现了数百万个日期各种字符串到日期转换形式的帖子,还有此页面,因此我尝试了以下操作: 但是它引发了一个异常。(该异常是(SSollevata un’eccezione durante la gesti

  • 问题内容: 我需要解析一个字符串到目前为止。但是得到了一个不可解析的异常。以下是我的代码: 问题答案: 您的格式有几个问题: 表示年份中的某天,而不是月份中的某天 您错过了时区 月的格式不正确 因为你的时间是24小时制,你需要的,而不是 有关 日期和时间模式的 信息,请参阅文档。