java中的日期处理

 1 package cn.learn;
 2 
 3 import java.text.ParseException;
 4 import java.text.SimpleDateFormat;
 5 import java.util.Calendar;
 6 import java.util.Date;
 7 /*
 8 Date:精确到毫秒,Date()获取当前的毫秒值,是于格林时间的差值
 9 java.util.Date
10 
11 日期转换:
12 时间原点:1970年1月1日00:00:00(英国格林威治时间)
13 中国东八区再增加八小时
14 1天等于86400s
15  */
16 public class DateApi {
17     public static void main(String[] args) throws ParseException {
18 
19         //计算当前时间毫秒值,是一个与时间原点的毫秒差值,long型
20         System.out.println(System.currentTimeMillis()); //1567842049596
21         System.out.println(System.currentTimeMillis()/(86400*1000)/365); //49
22         System.out.println(new Date().getTime()); //1567842049596
23 
24         //Date类的无参构造方法,获取系统当前时期时间
25         System.out.println(new Date());  //Sat Sep 07 15:35:39 CST 2019
26 
27         //Date类带参数的构造方法new Date(long 毫秒值)
28         System.out.println(new Date(System.currentTimeMillis()));//Sat Sep 07 15:35:39 CST 2019
29 
30         //Date类的格式化,DateFormat在java.text.DateFormat
31         //功能:1.解析 2.格式化
32         /*
33         SimpleDateFormat的两大方法
34         1.String format(Date date) -按照指定的格式,把Date日期格式化为符合模式的字符串
35         2.Date parse(String source) -把符合模式的字符串,解析为Date日期
36         注:parse声明了一个异常方法,如果不符合构造模式,就会抛出异常
37 
38         DateFormat是一个抽象类,需要继承重写抽象方法
39         java已有SimpleDateFormat继承了DateFormat
40 
41          */
42 
43         //把日期格式化为文本
44         SimpleDateFormat std = new SimpleDateFormat();
45         Date date= new Date();
46         System.out.println(std.format(date));//默认为2019/9/7 下午4:08
47         //格式化时format(也可以是毫秒数)
48         System.out.println(new SimpleDateFormat("yyyy-MM-dd,HH:mm:ss").
49                 format(new Date()));  //2019-09-07,16:04:29
50 
51         //解析方法parse必须和new时的pattern格式一样,返回一个Date格式,
52         //会抛出一个解析异常,"-"
53         std.parse("2018-02-03,10:00:02");
54 
55     }
56 
57 }
 1 package cn.learn;
 2 /*
 3 Calendar为一个抽象类
 4 里面有含有很多操作日历字段的方法,其中有一个静态方法getInstance,该方法返回了Calendar的子类对象
 5 常用方法:
 6 1.public int get(int field); -返回给定日历字段值
 7 2.public void set(int field,int value) -把给定的字段,设置日历值
 8 3.public abstract void add(int field,int amount); -根据日历的规则,为给定的日历字段添加或减去指定的时间量
 9 field 代表封装在Calendar中的静态常量,例如YEAR代表年,实际上是集合元素的索引值
10 
11  */
12 
13 import java.util.Calendar;
14 import java.util.Date;
15 
16 import static java.util.Calendar.*;
17 
18 public class CalendarApi {
19     public static void main(String[] args) {
20         Calendar today = Calendar.getInstance();  //多态
21         System.out.println(today);   //today的所有字段值,含日历的各种信息
22         System.out.println(today.getTime());  //等同于new Date();,返回的为Date对象,把日历对象转换了日期对象
23         System.out.println(new Date());  //实际是毫秒值
24 
25         /*
26         获取年月日,没有下面好用
27          System.out.println(new SimpleDateFormat("yyyy-MM-dd,HH:mm:ss").
28                         format(new Date()));  //2019-09-07,16:04:29
29          */
30         //拆分出来好计算差值值,注意的有月份少1,日少一日(从0开始),时间是12进制
31         System.out.println(today.get(YEAR)+"年"+(today.get(MONTH)+1)+"月"
32                    +(today.get(DAY_OF_MONTH)+1)+"日 "+(today.get(HOUR)+12)+"时"
33                    +today.get(MINUTE)+"分"+today.get(SECOND)+"秒");
34 
35         //设置时间,计算差值
36         Calendar oldDay = Calendar.getInstance();
37         oldDay.set(Calendar.MONTH,2);
38         System.out.println(today.get(MONTH)-oldDay.get(MONTH)+1);  //8-2+1=7
39         //同时设置年月日,set方法重载
40         oldDay.set(2017,8,1);
41         System.out.println(oldDay.get(MONTH));  //8
42         System.out.println(today.get(MONTH)-oldDay.get(MONTH));  //8-8=0
43 
44         /*
45              public abstract void add(int field,int amount); -根据日历的规则
46              为给定的日历字段添加或减去指定的时间量
47          */
48         today.add(YEAR,5);
49         System.out.println(today.get(YEAR)); //2024
50 
51 
52     }
53 }
54 //Date可用来计算天数差,Calendar可用来计算年数差,但Calendar生成的对象也有getTime(),
55 // 格式化,解释输出,Date好用
原文地址:https://www.cnblogs.com/huxiaobai/p/11483521.html