gpt4 book ai didi

java - Joda time - 格式不同时解析

转载 作者:搜寻专家 更新时间:2023-11-01 03:39:29 25 4
gpt4 key购买 nike

我从一个网站接收到日期/时间字符串,该字符串的毫秒值位数似乎可变。

示例:

2013-08-15T06:21:49.35054+01:00

2013-08-15T06:21:49.350546+01:00

2013-08-15T06:21:49+01:00

目前我使用:

static final Map<Integer,DateTimeFormatter> parsers = new HashMap<Integer,DateTimeFormatter>();
static {
parsers.put("2013-07-23T22:44:00+01:00".length(),
DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZ"));
parsers.put("2013-07-27T18:00:59.9+01:00".length(),
DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SZ"));
parsers.put("2013-07-27T18:00:59.99+01:00".length(),
DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSZ"));
parsers.put("2013-07-27T18:00:59.999+01:00".length(),
DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ"));
parsers.put("2013-07-27T18:00:59.9999+01:00".length(),
DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSZ"));
parsers.put("2013-07-27T18:00:59.99999+01:00".length(),
DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSZ"));
parsers.put("2013-07-27T18:00:59.999999+01:00".length(),
DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ"));
parsers.put("2013-07-27T18:00:59.9999999+01:00".length(),
DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSZ"));
}

public static Date parseDate(String date) {
return parsers.get(date.length()).parseDateTime(date).toDate();
}

有没有更简洁的方法来做到这一点?

最佳答案

我找到了解决 ms 字段中可变位数的具体问题的方法。

static final DateTimeFormatter isoParser = ISODateTimeFormat.dateTimeParser();

public static Date parseDate(String date) {
return isoParser.parseDateTime(date).toDate();
}

但是 - 我会对更通用的解决方案感兴趣,该解决方案可以处理多种可能但可区分的格式中的任何一种。

关于java - Joda time - 格式不同时解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18250035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com