java基础:6.4 日期类、日历类
1.日期
-
用到的是:
date()
得到当前时间信息Date d1 = new Date();
,使用时需要引用类java.util.Date;
Java中的时间原点,其对应的日期是1970年1月1日 8点0分0秒 。 (为什么是8点,因为中国的太平洋时区是UTC-8,刚好和格林威治时间差8个小时)
为什么对应1970年呢? 因为1969年发布了第一个 UNIX 版本:AT&T,综合考虑,当时就把1970年当做了时间原点。每过1毫秒+1。
-
getTime()
得到一个long型的整数,距离时间原点经过的总毫秒数。从1970.1.1 08:00:00:000 开始,每经历一毫秒,增加1。
System.out.println(d1.getTime()); //1552544316665这种方法得到的值很不直观对吧,"1552544316665"这结果没啥有效信息啊。所以,推荐采用
0构造法
,得到一个1970.1.1 08:00的标准格式的时间。
Date zero = new Date(0);
System.out.println(“用0作为构造方法,得到的日期是:”+zero); -
System.currentTimeMillis()
距离时间原点经过的总毫秒数。
和new Date().getTime()
是一样的,但执行程序的机器不同、性能可能不同,时间会存在差异。 -
格式化日期格式输出
SimpleDateFormat
,属于类java.text.SimpleDateFormat;
创建对象时()中的格式不同,得到的显示也不同。下图是eclipse给出的阳历
结果以数字显示的 :y-m-d H:m:ss SS
分别代表年 月 日 时 分 秒 毫秒
结果以字母显示的E
= 星期x ,MMM
= x月 ,a
= pm/下午 ,
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS" );
Date d= new Date();
String str = sdf.format(d);
System.out.println(str); // 2019-10-14 15:10:45 952
2. 日历类
. 为 Calendar类
,属于java.util.Calendar;
Calendar c = Calendar.getInstance();
Date now = c.getTime(); // 获取时间
System.out.println("now is " + now); // now is Thu Mar 14 16:30:28 CST 2019
Date d3 = new Date(0);
c.setTime(d3); // 重新设置时间
. 翻日历操作
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
Date now = c.getTime();
// 当前日期
System.out.println("当前日期:\t" + format(c.getTime()));
// 下个月的今天
c.setTime(now);
c.add(Calendar.MONTH, 1);
System.out.println("下个月的今天:\t" +format(c.getTime()));
// 去年的今天
c.setTime(now);
c.add(Calendar.YEAR, -1);
System.out.println("去年的今天:\t" +format(c.getTime()));
// 上个月的第三天
c.setTime(now);
c.add(Calendar.MONTH, -1);
c.set(Calendar.DATE, 3);
System.out.println("上个月的第三天:\t" +format(c.getTime()));
}
private static String format(Date time) {
return sdf.format(time);
}
```