使用 T 字符格式化特定日期

问题描述 投票:0回答:2

解析此日期的正确形式是什么?:

2015-05-29T00:00:00+02:00

DateFormat format = new SimpleDateFormat("yyyyy-mm-dd hh:mm:ss");
Date data = format.parse(dataValue);
java date date-format simpledateformat
2个回答
3
投票

尝试使用

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");

注意

  • MM
    代表月,而
    mm
    代表分钟。
  • 如果您想要24小时格式,请使用
    HH
    hh
    适用于12小时格式
  • XXX
    表示时区,格式如
    -08:00
  • 要在格式中添加类似
    T
    的文字,您需要用单引号将其引起来
    '
    就像
    'T'

0
投票

java.time

2014 年 3 月,Java 8 引入了现代的

java.time
日期时间 API,取代了容易出错的旧版
java.util
日期时间 API
。任何新代码都应使用
java.time
API。

使用现代日期时间 API 的解决方案

由于现代日期时间 API 基于 ISO 8601 标准,因此您不需要显式使用

DateTimeFormatter
对象来解析符合 ISO 8601 标准的日期时间字符串。您的日期时间字符串包含时区偏移字符串 (
+02:00
),因此,用于解析它的最合适的类型是
OffsetDateTime

演示:

import java.time.OffsetDateTime;

public class Main {
    public static void main(String args[]) {
        OffsetDateTime odt = OffsetDateTime.parse("2015-05-29T00:00:00+02:00");
        System.out.println(odt);
    }
}

输出:

2015-05-29T00:00+02:00

无论出于何种原因,如果您需要

java.util.Date
对象的
OffsetDateTime
实例,您可以按如下方式操作:

Date date = Date.from(odt.toInstant());

Trail:日期时间了解有关现代日期时间 API 的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.