使用simpldedateformat 和calendar 进行转化,
解决的思路是,
1、先把字符串根据格式使用simpleDateFormat
2、把你要解析的字符串,通过simpleDateFormat的工具转成Date类型的
3、得到calendar日历类,并把转换后的Date放入日历类中。
4、通过calendar类中的方法可以获取到传入的Date的年月日。
ps:由于月份是从0开始计算的,所以在获取的时候要+1
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = sf.parse("2015-12-01");
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
System.out.println(calendar.get(Calendar.YEAR));
System.out.println(calendar.get(Calendar.MONTH) + 1);
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
} catch (ParseException e) {
e.printStackTrace();
}
String source = "2012-10-30";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
try {
Date date = sdf.parse(source); // 获取Date
Calendar cal = Calendar.getInstance();
cal.setTime(date); // 转为新Calendar
int year = cal.get(Calendar.YEAR); // 年
int month = cal.get(Calendar.MONTH) + 1; // 月
int day = cal.get(Calendar.DAY_OF_MONTH); // 日
} catch (ParseException e) {
e.printStackTrace();
// 异常处理操作
}
其他方式一概不标准,如果你不在乎是否符合Java规范的话,也可以直接使用已经被“deprecated”的API,这样就不用Calendar了。
可以从“获取Date”那行之后直接调用 date.getXXX -- 但这些方法已经不推荐使用了,因为会有些细节上的问题。
public class Test {
public static void main(String[] args) {
String target="2012-01-11";
String[] result=target.split("-0*");
//括号里的字符串是个正则表达式,其中“0*”表示0出现0次或多次,然后用这个表达式分割字符串
//当然,若你想吧月份或日期的0保留,可以去掉“0*”部分。
for(int i=0;i
}
}
}
split("-");
你是想怎么截取呢?
变成Date型的时间?
还是变成
2012
01
01
这样的数组?
变成时间的话,可以用
Date date = new SimpleDateFormat("yyyy-MM-dd").parse(“2012-01-01”);
变成数组的话,可以用
String timeStr = “2012-01-01”;
List list = timeStr.split("-");