处理日期时间,主流三个类,Date,DateFormat,SimpleDateFormat,Calendar。SimpleDateFormat继承于DateFormat,DateFormat继承于Format。
DateFormat和SimpleDateFormat具备日期 -> 文本,文本-> 日期的功能。Date中好多方法不用了。
常用案例场景
//把字符串转化为Date
String str="2020/04/18 23:59:59";
DateFormat df =new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date =df.parse(str);
System.out.println(date);
//把Date转化为字符串 getDateTimeInstance()可以设置style
String date2=DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.LONG).format(date);
String date3=DateFormat.getDateInstance(DateFormat.FULL).format(date);
String date1=DateFormat.getDateTimeInstance().format(date);
System.out.println(date1);
//用Calendar获取当前日期
Calendar c=Calendar.getInstance();
System.out.println(c.getTime());
Calendar 类是一个抽象类,它为特定时间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。对应操作 YEAR、MONTH、DAY_OF_MONTH、HOUR 等方法在Date中好多都过期了,现在一般都是用Calendar。
1.初始值
代码如下,值得指出的是由于我们的时区设置是GMT+8,所以打印格林威治时间得到的是1970-01-01 08:00:00. Calendar cal = Calendar.getInstance();//得到当前时间 cal.setTimeInMillis(0);//转换成格林威治时间
2.获取值
cal.get(Calendar.YEAR);//年 cal.get(Calendar.MONTH) + 1;//月(必须要+1) cal.get(Calendar.DATE);//日 cal.get(Calendar.HOUR_OF_DAY);//时 cal.get(Calendar.MINUTE);//分 cal.get(Calendar.SECOND);//秒 cal.get(Calendar.DAY_OF_WEEK);//星期(Locale.ENGLISH情况下,周日是1,剩下自己推算)
4、设置值
cal.set(2013, 5, 4, 13, 44, 51);//年月日时分秒(月份0代表1月) cal.set(Calendar.YEAR, 2014);//年 cal.set(Calendar.MONTH, 7);//月(月份0代表1月) cal.set(Calendar.DATE, 11);//日 cal.set(Calendar.HOUR_OF_DAY, 15);//时 cal.set(Calendar.MINUTE, 33);//分 cal.set(Calendar.SECOND, 32);//秒
5. 运算值
cal.add(Calendar.YEAR, 1);//年 cal.add(Calendar.MONTH, 1);//月 cal.add(Calendar.DATE, 1);//日 cal.add(Calendar.HOUR_OF_DAY, -1);//时 cal.add(Calendar.MINUTE, 1);//分 cal.add(Calendar.SECOND, 1);//秒 cal.add(Calendar.DATE, 7);//周
注意:两个时间要相减,必须转化成Long类型的毫秒相减,可以用Date中的public long getTime();返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。进行相减。
原文:https://www.cnblogs.com/xiaohu666/p/12727491.html