Java正则表达式将日期格式提取到月份和年份

时间:2011-06-30 16:35:27

标签: java regex

您好我有以下日期字符串格式:

六月-2008

七月-2008

03 - 2010

我可以查询什么是java正则表达式,将每个月和年的值提取到单独的字符串中。这里的分隔符是“ - ”符号

“ - ”符号从开头到结尾的任何值都是月份,“ - ”符号后面的任何值都是年份值。

以下是我想要实现的目标

String m = March   
String y = 2010

感谢大家的帮助!

2 个答案:

答案 0 :(得分:6)

不要使用正则表达式。使用String#split()

String[] parts = "June-2008".split("-", 2); // or .split("-")
String m = parts[0]; // "June"
String y = parts[1]; // "2008"

更好的是,使用SimpleDateFormat,您将有一个合适的Date可以使用:

DateFormat df = new SimpleDateFormat("M-y");
Date myDate = df.parse("June-2008");

答案 1 :(得分:0)

我想扩展Matt Ball给出的答案。如果您要拆分该字符串并愿意使用String#split()之外的其他字符,则可以使用StringUtilsApache Commons Lang。它有各种String实用程序方法。

一个例子:

String strDate = "June-2008";
String[] parts = StringUtils.split(strDate, '-');
String month = parts[0]; // "June"
String year = parts[1]; // 2008

此外,如果您想获得java.util.Date个对象,那么Joda Time可能会对您有所帮助。我个人更喜欢这个api而不是java.util.Date,因为它更丰富,更易于使用,更少错误。

现在我们可以将String操作为:

String strDate = "June-2008";
DateTimeFormatter formatter = DateTimeFormat.forPattern("MMMM-yyyy");
DateTime dateTime = formatter.parseDateTime(strDate); // parse it
Date javaDate = dateTime.toDate(); // a java.util.Date object
int year = dateTime.getYear(); // 2008
String month = dateTime.month().getAsText(); // June

希望这会对你有所帮助。感谢。