我有一个值列表12012
,112013
,52005
存储为字符串,我需要将它们转换为2012年1月,2013年11月,2005年5月。我知道如何使用解析字符串并使用if
语句来完成此操作。有没有有效的方法?
答案 0 :(得分:4)
这样的事可能有用:
String val = "12012";
int numVal = Integer.parseInt(val);
int year = numVal % 10000;
int month = numVal / 10000;
... create a date from that ...
我不知道你是想要一个java Date
还是Calendar
或者其他什么。
Calendar cal = Calendar.getInstance().clear();
cal.set(year, month-1, 1);
Date date = cal.getTime();
或Joda没有时区的日期时间:
LocalDate dt = new LocalDate(year, month, 1);
答案 1 :(得分:3)
使用SimpleDateFormat模式可以轻松实现:尝试使用以下简单代码:
String str="12012";//112013 , 52005
SimpleDateFormat format=new SimpleDateFormat("Myyyy");
SimpleDateFormat resFormat=new SimpleDateFormat("MMM yyyy");
Date date=format.parse(str);
System.out.println(resFormat.format(date));
答案 2 :(得分:2)
由于您的字符串表示日期有两种不同格式Myyyy和MMyyyy,SimpleDateFormat
我不确定您是否可以避免if语句,我就是这样做的:
SimpleDateFormat sdf1 = new SimpleDateFormat("Myyyy");
SimpleDateFormat sdf2 = new SimpleDateFormat("MMyyyy");
Date d = null;
if(5 == s.length()){
d = sdf1.parse(s);
}else if(6 == s.length()){
d = sdf2.parse(s);
}