<small>
日期的简单操作:获得日期、日期设置、日期计算
Java 中没有一个类,可以直接完成日期操作
要想实现 Java 中的日期操作,必须有以下三个类共同搭配使用,才能实现
java.util.Date 日期类:获得当前系统时间
java.text.simpleDateFormat日期格式转换类,可以实现日期格式的想换转换
java.util.Calendar 日历类,格里高利历实现日期设置
java.util.Date
1、通过构造获得当前系统时间
此时间表现方式为西方时间格式
Date nowDate=new Date();
System.out.println(nowDate);//当前时间
long getTime()
返回从1970年元月1日零时零分零秒至今的毫秒值
与 System,currentTimeMillis();相同
void setTime(long times)
返回给定毫秒值对应的日期时间
用于设置给定毫秒值对应的时期时间;
long times2=100000000000000000L;
nowDate.setTime(times); 返回给 nowDate
此方法不好,可以用有参构造
Date futureDate=new Date(times2)
java.text.simpleDateFormat
由于new Date()获得当前系统时间,为西方表示方式,对于中国人来说,不死十分友好,素有我们需要将西方表示方式转换成中国人比较习惯的表现方式
中国人习惯的方式:
2016年10月13日 15时07分38秒
2016-10-13 15:07:38
y: 年
M: 月
d :月份中的天数
H: 24小时制
h :12小时制
m:分
s: 秒
2016年10月13日 15时07分38秒
yyyy 年 MM 月 dd 日 HH 时mm 分 ss 秒
SimpleDateFormat sdf=new SimpleDateFormat("yyyy 年 MM 月 dd 日 HH 时mm 分 ss 秒")
通过制定日期格式转换对象将 new Date()系统时间转换为指定日期格式的表现形式
Date date=new Date();
Date→String
String nowDate=sdf.format(date);
parse
将中方的时间转换为西方的时间
String→Date 将字符串时间转为 Date
此方法可能抛出异常
情形1:如果格式没有问题,字符串时间输入没有问题,则不会抛出异常
情形2:如果格式有问题,或者字符串时间输入对不上号则会抛出异常
String dateStr="2008年08月08日 20时08分08秒"
SimpleDateFormat sdf=new SimpleDateFormat("yyyy 年 MM 月 dd 日 HH 时mm 分 ss 秒")
Date parse(String dateStr);//中方字符串时间格式化,将字符串时间通过指定格式转换为 date 类型时间
Date date=sdf2.parase(dateStr)
java.util.Calendar
创建对象,由于 Calendar 是一个抽象类,可以通过父类引用指向子类 GregorianCalendar对象方式实现实例化//不常用
Calendar cal=new GregorianCalendar()//不常用
可以通过工厂方法模式
Calendar cal2=Calendar.getInstance();
Date getTime()
从日历中获得当前系统时间,与 new Date()直接获得当前系统时间等效
void setTime()
给日历指定的日期时间
Date date2=new new SimpleDateFormat("yyyy 年 MM 月 dd 日 HH 时mm 分 ss 秒").parse("2008年08月08日20时08分08秒")
①、Date getTime()
* Calendar → Date
* 从日历中获得当前系统时间。
* 与new Date()直接获得当前系统时间等效。
*/
Date date = new Date();
System.out.println("new Date:"+date);
Date dateFromCal = cal.getTime();
System.out.println("dateFromCal:"+dateFromCal);
/*
* ②、void setTime()
* Date → Calendar
* 给日历设置指定的日期时间。
*/
Date date2 =
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.parse("2008-08-08 20:08:08");
//将日历设置时间为date2
cal.setTime(date2);
System.out.println("setTime之后的日历时间:"+cal.getTime());
/*
long getTimeInMillis()
long times=cal.getTimeInMillis()
####### setTimeInMillis
![时间转换](http://upload-images.jianshu.io/upload_images/66256-42884bcfddcf17e7.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
####### 时间分量函数
时间分量:
YEAR 年
MONTH 月
DATE 日
DAY_OF_MONTH
HOUR 时(12小时制)
HOUR_OF_DAY 时(24小时)
MINUTE 分
SECOND 秒
DAY_OF_WEEK(周日为一周的开始)
calendar cal=Calendar.getInstance();
System.out.println(年:cal.get(calendar.YEAR));//2016
System.out.println(年:cal.get(calendar.MONTH));//9表示10月,0 表示1
######cal.set(Calendar.YEAR,2017)
其他设置类似
设置日历为日历时间所在周的周几
-
void add(时间分量,值)
*/
cal.add(Calendar.DATE, -3);//三天前
System.out.println("三天前的时间:"+cal.getTime());cal.add(Calendar.MINUTE, 10);//10分钟后 System.out.println("10分钟的时间:"+cal.getTime()); cal.add(Calendar.MONTH, 4);//4个月后 System.out.println("4个月后的时间:"+cal.getTime());
######时间分量的运算
时间计算:如明天此时10分钟后等我,四个月后结束
###### void add(时间分量,值)
cal.add(Calendar.DATE,-3)