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好用