java 如何把string 型2012-01-01截取成年月日

2025-05-11 15:53:58
推荐回答(5个)
回答1:

使用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();
}

回答2:

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 -- 但这些方法已经不推荐使用了,因为会有些细节上的问题。

回答3:

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 System.out.println(result[i]);//在这里你就可以给年月日赋值了,这个自己搞。
}
}
}

回答4:

split("-");

回答5:

你是想怎么截取呢?
变成Date型的时间?
还是变成
2012
01
01
这样的数组?
变成时间的话,可以用
Date date = new SimpleDateFormat("yyyy-MM-dd").parse(“2012-01-01”);

变成数组的话,可以用
String timeStr = “2012-01-01”;
List list = timeStr.split("-");