时间日期
1)java中的时间类有:Date和Calendar
2)java中时间类的本质 long(毫秒数)
Date = long +历法算法(方法gerYear())
Calendar = long +历法算法(方法ger())
3) 时间的标准有两种
(1970)GMT long
(0)UTC long
4) java中基本的时间表示GMT long
5) java提供了Date类型表示时间和日期
Date 是long 类型的包装
6) Calendar 是历法的抽象
历法:公历,农历,太阳历
7) GregorianCalendar是历法的实现,采用公历的算法实现的
Calendar cal = Calendar.getInstance();
Calendar cal = new GregorianCalendar();//除了日本和泰国,效果等同于上一句
8) Date和 Calendar的默认值就是系统当前时间
一 java中表示时间的方式:
1) 格林威治时间(GMT):1970年1月1日 00:00:00(注:中国是东八区,所以要+8个小时)
也就是1970年1月1日 08:00:00
2 )公元元年(UTC): 0年
3 )目前java中3种日期表达方式long, Date , Calendar都在用
1例子 2import java.util.Calendar; 3import java.util.Date; 4import java.util.GregorianCalendar; 5 6publicclass LongDateDemo { 7publicstaticvoid main(String[] args) { 8long now = System.currentTimeMillis(); 9long year = now/1000/60/60/24/365 +1970;10 System.out.println(year);11//一年 地球绕太阳一圈(365天+1/4天)12//原点(公元元年)1314/* date.getYear()是将date内部的long时间,根据历法计算15 * 为年份,返回值是2位数年份,如:1997年返回97,但是过了16 * 2K年,返回3位数年份,如2012返回11217*/1819//老板本20 Date date = new Date();//默认是当前时间(long)21int y = date.getYear()+1900;22int month = date.getMonth()+1;23 System.out.println(y+"年"+month+"月");2425//新版本26//Calendar 历法27 Calendar cal = new GregorianCalendar();//默认是当前时间(long)28 y = cal.get(Calendar.YEAR);//201229 month = cal.get(Calendar.MONTH)+1;//430 System.out.println(y+"年"+month+"月");313233 }3435 }
二 时间类型转换 long <-> Date <-> Calendar
long --->Date : dat = new Date(l)
dat.setTime(l)
Date --->Calendar : cal.setTime(dat)
Calendar ---> Date: cal.getTime()
Date ---> long :dat.getTime()
注:Date dat , long l ,Calendar cal
例子
1import java.util.Calendar; 2import java.util.Date; 3import java.util.GregorianCalendar; 4 5/** 6 * 时间的类型转换 7*/ 8publicclass DateCaseDemo { 9publicstaticvoid main(String[] args) {10long gmt = 0;//格林威治时间 1970/01/011112 Date date = new Date();13 date.setTime(gmt);//回到1970 元旦,相当于long -->Date14 System.out.println(date.getYear()+1900);//19701516 Calendar cal = new