【发布时间】:2014-01-20 16:37:01
【问题描述】:
我想使用格式为 yyyyMMddHHmmss+timezone 的 String 获取 DateTime 对象,
举个例子:
20131216014500+0000
看起来我可以使用 DateTimeFormatter 但我真的不知道如何,然后我使用正则表达式来创建 DateTime 对象。为此,我正在使用这个:
Pattern.compile("([0-9][0-9][0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])\\+([0-9][0-9][0-9][0-9])");
Matcher m = p.matcher(timestamp);
String match = m.group();
int year = Integer.parseInt(m.group(0));
int monthOfYear = Integer.parseInt(m.group(1));
int dayOfMonth = Integer.parseInt(m.group(2));
int hourOfDay = Integer.parseInt(m.group(3));
int minuteOfHour = Integer.parseInt(m.group(4));
int secondOfMinute = Integer.parseInt(m.group(5));
// TimeZone tz = TimeZone.getTimeZone("");
DateTime date = new DateTime(year, monthOfYear, dayOfMonth, hourOfDay, minuteOfHour, secondOfMinute);
这里我有两个问题,一个是我不知道如何设置TimeZone。
第二个是运行这个我得到 java.lang.IllegalStateException。
有什么帮助吗?
【问题讨论】:
-
请使用
DateTimeFormatter。网上的例子很多,javadoc 更好。 -
^ 同意。此外,使用正则表达式,您不需要像那样重复整数模式。
([0-9]{4})([0-9]{2})等,工作得很好。如果您有任何疑问,regexpal.com 是一个很棒的小网站! -
这句话在这里非常适合:'有些人在遇到问题时,会想“我知道,我会使用正则表达式。”现在他们有两个问题。 -Jamie Zawinski :)