前几天改别人代码,有一个业务是从时间中获取年月日时分秒,分别存入数据库的6个字段中,他用了转成yyyyMMddHHmmss的字符串再截取的方式,这么写有点low!
Java有现成的工具类可以用,Calendar就可以,最近又发现String.format也可以,所以把两种都整理一下。
1.Calendar
/**
* Calendar获取年月日时分秒
* @param date
*/
private static void test10(Date date) {
System.out.println("============使用Calendar=============");
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int year = cal.get(Calendar.YEAR);
//获取月份,会比实际月份少一天,所以要 +1 ,因为月份取值区间[0,11]
int month = cal.get(Calendar.MONTH) + 1;
int day = cal.get(Calendar.DATE);
int hour24 = cal.get(Calendar.HOUR_OF_DAY);
int hour12 = cal.get(Calendar.HOUR);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
System.out.println(year + "/" + month + "/" + day + " " + hour24 + ":" + minute + ":" + second);
//一周的第几天, 星期天是 1,星期六是 7
int WeekOfYear = cal.get(Calendar.DAY_OF_WEEK);
System.out.println(WeekOfYear);
}
2.String.format
/**
* String 格式化时间
*/
private static void test10() {
System.out.println("============使用String.format=============");
Date dt = new Date();
String year = String.format("%tY", dt);
String month = String.format("%tm", dt);
String day = String.format("%td", dt);
String hour = String.format("%tH", dt);
String minute = String.format("%tM", dt);
String second = String.format("%tS", dt);
System.out.println(year + "/" + month +"/" + day + " " + hour + ":" + minute + ":" + second);
}
运行结果如下
需要注意的是:String.format的功能非常强大,已经有大佬整理的很全面了,链接如下
JAVA字符串格式化-String.format()的使用