首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将日期字符串分析为java.util.Date时,模式字符“T”非法

将日期字符串分析为java.util.Date时,模式字符“T”非法
EN

Stack Overflow用户
提问于 2010-04-08 10:00:07
回答 1查看 158.1K关注 0票数 207

我有一个日期字符串,我想使用java date API将其解析为普通日期,以下是我的代码:

代码语言:javascript
复制
public static void main(String[] args) {
    String date="2010-10-02T12:23:23Z";
    String pattern="yyyy-MM-ddThh:mm:ssZ";
    SimpleDateFormat sdf=new SimpleDateFormat(pattern);
    try {
        Date d=sdf.parse(date);
        System.out.println(d.getYear());
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

然而,我得到了一个异常:java.lang.IllegalArgumentException: Illegal pattern character 'T'

所以我想知道我是否必须拆分字符串并手动解析它?

顺便说一句,我尝试在T:的两边添加单引号字符:

代码语言:javascript
复制
String pattern="yyyy-MM-dd'T'hh:mm:ssZ";

它也不起作用。

EN

回答 1

Stack Overflow用户

发布于 2021-11-12 21:51:27

您可以通过以下方法将字符串解析为时间戳:

代码语言:javascript
复制
public static void main(String[] args) {

    String timeStr = "2021-11-11T10:25:35+00:00";
    System.out.println(convertStringToTimestamp(timeStr));

}

static Timestamp convertStringToTimestamp(String dateAsString) {
    OffsetDateTime offsetDateTime = OffsetDateTime.parse(dateAsString);
    final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'");
    return Optional.ofNullable(offsetDateTime.toString())
            .map(value -> LocalDateTime.parse(value, dateTimeFormatter))
            .map(Timestamp::valueOf)
            .orElse(null);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2597083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档