日期和时间

处理日期时间,主流三个类,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);输出:Sat Apr 18 23:59:59 CST 2020

再把这个Date类型转化为想要的格式

String str2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);

System.out.println(str2);输出:2020-04-18 23:59:59

//把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);

//把Long转化为Date类型字符串

File file =new File("D:\\批处理.bat");
Long lastUpdateTime=file.lastModified();
Date date =new Date(lastUpdateTime);
String df =DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG).format(date);
System.out.println(df);输出:2016年4月20日 下午11时50分58秒

//用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 对象表示的毫秒数。进行相减。



  

  

  

posted @ 2020-04-18 19:02  小胡666  阅读(522)  评论(0)    收藏  举报
39
0