Optional parts in SimpleDateFormat(SimpleDateFormat 中的可选部分)
问题描述
我正在读取可能带有或不带有时区调整的日期字符串:yyyyMMddHHmmssz
或 yyyyMMddHHmmss
.当字符串缺少区域时,我会将其视为 GMT.我没有看到在 SimpleDateFormat
中创建可选部分的任何方法,但也许我遗漏了一些东西.有没有办法用 SimpleDateFormat
来做到这一点,还是我应该写一个新的具体 DateFormat
来处理这个?
I'm reading in date strings that could be with or without a time zone adjustment: yyyyMMddHHmmssz
or yyyyMMddHHmmss
. When a string is missing a zone, I'll treat it as GMT. I'm not seeing any way to create optional sections in a SimpleDateFormat
, but maybe I'm missing something. Is there a way to do this with a SimpleDateFormat
, or should I just write a new concrete DateFormat
to handle this?
推荐答案
我会创建两个 SimpleDateFormat,一个有时区,一个没有.您可以查看 String 的长度来确定使用哪一个.
I would create two SimpleDateFormat, one with a time zone and one without. You can look at the length of the String to determine which one to use.
听起来您需要一个代表两个不同 SDF 的 DateFormat.
Sounds like you need a DateFormat which delegates to two different SDF.
DateFormat df = new DateFormat() {
static final String FORMAT1 = "yyyyMMddHHmmss";
static final String FORMAT2 = "yyyyMMddHHmmssz";
final SimpleDateFormat sdf1 = new SimpleDateFormat(FORMAT1);
final SimpleDateFormat sdf2 = new SimpleDateFormat(FORMAT2);
@Override
public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
throw new UnsupportedOperationException();
}
@Override
public Date parse(String source, ParsePosition pos) {
if (source.length() - pos.getIndex() == FORMAT1.length())
return sdf1.parse(source, pos);
return sdf2.parse(source, pos);
}
};
System.out.println(df.parse("20110102030405"));
System.out.println(df.parse("20110102030405PST"));
这篇关于SimpleDateFormat 中的可选部分的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:SimpleDateFormat 中的可选部分
基础教程推荐
- 在螺旋中写一个字符串 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01