日期和时间
专门用来表示日期和时间的类:
1.Date (是long类型的包装) date日期
2.Calendar (抽象类,是历法的抽象) calendar日历
3.long (可以表示,一般不使用,表示1970至今毫的秒数) 相对时间(1970年)
Java中表示时间的类的本质:
1.Date=long + 操作 偏重时间,重点在一刹那时间本身
2.Calendar= long + 操作 偏重日历计算
时间的标准
GMT 1970.01.01开始
UTC 0开始
语法:
1.Date创建对象
Date date=new Date(); //默认值为系统的当前时间
Date date=new Date(年-1900,月-1,日); //年份需要减去1900 月份需要减1
2.获取年份
int year = date.getYear(); (已过时,不使用,有”千年虫”问题,并且有1900的误差,)
获取月份
int mOnth= date.getMonth(); (已过时,不使用,0代表1月,需要加1)
(日期:Date,时:Hours,分: Minutes,秒: Seconds,星期几:Day)
3.Calendar创建对象 (最好使用Calendar,不使用Date)
Calendar cal=new GregorianCalendar(); //默认值为系统的当前时间
cal.get(2009,3-1,1) //设定到指定时间,月份需要减1
Calendar 抽象类 历法的抽象 new的是GregorianCalendar对象
GregorianCalendar(1582公历 一种历法)是Calendar类的子类
GregorianCalendar 就是公元历法(公历) = long类型 + 公历算法
4.获取年份
cal.get(Calendar.YEAR)
获取月份
cal.get(Calendar.MONTH) (0月代表1月,需要加1)
5.long创建对象
long now = System.currentTimeMillis();
(表示从格林威治开始时间(1970.1.1)至今的毫秒数)
获取年份
int year = now/1000/60/60/24/365 + 1970 (开始时间是1970所以要+1970)
不同日期时间类的相互转化
获取系统现在时间:
Date: new Date()
Calendar: new GregorianCalendar();
long: System.currentTimeMillis();
Date , long之间的相互转化
Date àlong date.getTime()
long à1. Date date = new Date(long); (long为long类型的对象引用名称)
2. Date date = new Date();
date. setTime(long); (long为long类型的对象引用名称)
Date,Caledar之间的相互转化
DateàCalendar Date date = new Date();
Calendar cal=new GregorianCalendar();
cal.setTime(date);
CalendaràDate Calendar cal=new GregorianCalendar();
cal.getTime();
Calecdar的add方法:可以在Calendar对象中的某个字段上增加/减少一定数值
cal.add(Calendar.YYY , X) X为正则加,X为负则减
EG:cal.add(Calecdar.Year , 100) 在当前的日期上加100年
Calecdar的set方法:调整日期到某一天
EG: 调整到当前周(DAY_OF_WEEK)的周五
cal.set(Calendar. DAY_OF_WEEK, Calendar.FRIDAY );
Date和String之间的转化
日期的输入和输出
1.日期输入的本质 是将格式化的字符串转换成Date类型
2.日期输出的本质 是将Date类型转化成格式化的字符串
3.Java.text.SimpleDateFormat
a.首先需要创建一个SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//()中给字符串定义格式月份 M(month)必须大写 m代表分钟
b.sdf.parse(String) //将格式化的字符串转换成日期对象
sdf.format(date) //将日期对象格式化成字符串