Date类
- Date类的空参构造方法:Date()获取的就是当前系统的日期和时间
- Date类的带参数构造方法:Date(Long date):传递毫秒值,把毫秒转换为Date日期
- Date类的成员方法:Long getTime()把日期装换为毫秒(相当于System.currentTimeMillis())
public class Demo1 {
public static void main(String[] args) {
// demo1();
// demo2();
demo3();
}
/*
Date类的成员方法
Long getTime()把日期装换为毫秒(相当于System.currentTimeMillis())
返回自1970年1月1日00:00:00 GMT以来 此Date对象表示的毫秒值
*/
private static void demo3() {
Date date = new Date();
long time = date.getTime();
System.out.println(time);//1585187246748
}
/*
Date类的带参数构造方法
Date(Long date):传递毫秒值,把毫秒转换为Date日期
*/
private static void demo2() {
Date d1 = new Date(0L);
System.out.println(d1);//Thu Jan 01 08:00:00 CST 1970
Date d2 = new Date(15555555555546L);
System.out.println(d2);//Fri Dec 08 11:39:15 CST 2462
}
/*
Date类的空参构造方法:
Date()获取的就是当前系统的日期和时间
*/
private static void demo1() {
Date date = new Date();
System.out.println(date); //Tue Mar 24 15:03:50 CST 2020
}
}
DateFormat类&SimpleDateFormat类
-
构造方法:
SimpleDateFormat(String pattern) 用给定的模式和默认语言环境的日期符号构造 -
成员方法:
String format(Date date)按照指定的模式,把Date日期,格式化为符合模式的字符串
Date parse(String date) 把符合模式的字符串,解析为Date日期/* java.text.DateFormat:是日期/时间格式化子类的抽象类 作用: 格式化(也就是日期 -》文本)、解析(文本 -> 日期) 成员方法: String format(Date date)按照指定的模式,把Date日期,格式化为符合模式的字符串 Date parse(String date) 把符合模式的字符串,解析为Date日期 DateFormat类是一个抽象类,无法直接创建对象使用,可以使用DateFormat的子类 java.text.SimpleDateFormat extends DateFormat 构造方法: SimpleDateFormat(String pattern) 用给定的模式和默认语言环境的日期符号构造SimpleDateFormat 参数 : pattern:传递指定的模式 模式:区分大小写的 y 年 M 月 d 日 H 时 m 分 s 秒 写对应的模式,会把模式替换为对应的日期和时间 "yyyy-MM-dd HH:mm:ss" "yyyy年MM月dd日 HH时mm分ss秒" 注意: 模式中的字母不能更改,连接模式的符号可以改变 */ public class Demo01 { public static void main(String[] args) throws ParseException { // demo1(); //1.创建SimpleDateFormat对象,构造方法中传递指定的模式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //2.调用SimpleDateFormat对象中的方法Parse,把符合构造方法中模式的字符串,解析为Date日期 Date date = sdf.parse("2020-03-26 08:58:56"); System.out.println(date);//Thu Mar 26 08:58:56 CST 2020 } private static void demo1() { //1.创建SimpleDateFormat对象,构造方法中传递指定的模式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //2.调用SimpleDateFormat对象中的方法Format,按照构造方法中指定的模式,把 //Date日期格式化为符合模式的字符串(文本) Date date = new Date(); String text = sdf.format(date); System.out.println(date);//Thu Mar 26 08:58:56 CST 2020 System.out.println(text);//2020-03-26 08:58:56 } }
-
练习:使用日期时间相关API,计算出一个人出生了多少天
public class Demo02 { public static void main(String[] args) throws ParseException { //1.使用Scanner类中的方法next,获取出生日期 Scanner sc = new Scanner(System.in); System.out.println("请输入您的出生日期,格式为yyyy-MM-dd"); String birthdayDateString = sc.next(); //2.调用SimpleDateFormat对象中的方法Parse,把符合构造方法中模式的字符串,解析为Date日期 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date birthdayDate = sdf.parse(birthdayDateString); //3.把Date格式的出生日期转换为毫秒值 long birthdayDateTime = birthdayDate.getTime(); //4.获取当前日期转换为毫秒值 long todayTime = new Date().getTime(); long time = todayTime-birthdayDateTime; System.out.println(time/1000/60/60/24); } }
Calendar类
-
Calendar是一个抽象类,不能创建子类对象,子类对象获取方法
static Calendar getInstance() 使用默认时区和语言环境获得一个日历/* java.util.Calendar类:日历类 Calendar类是一个抽象类,里边提供了很多操作日历字段的方法(YEAR,MONTH,DAY_OF_MONTH,HOUR) Calendar类无法直接创建对象使用,里边有一个静态方法叫getInstance(),该方法返回calendar类的子类对象 static Calendar getInstance() 使用默认时区和语言环境获得一个日历 */ public class Demo1 { public static void main(String[] args) { Calendar c = Calendar.getInstance(); System.out.println(c); } }
-
Calendar类的成员方法:
- public int get(int field)返回给定日历字段的值。
- public void set(int field,int value)将给定的日历字段设置为给定的值。
- public abstract void add(int field,int amount);根据日历的规则,为给定的日历字段添加或减去指定的时间量
- public Date getTime(): 返回一个表示此Calendar时间值(从厉元到现在的毫秒偏移量)的Date对象
成员方法参数:
int field: 日历类的字段,可以使用Calendar类的静态成员变量获取
public static final int YEAR = 1; 年
public static final int MONTH = 2; 月
public static final int DATE = 5; 月中的某- -天
public static final int DAY_ OF_ MONTH=5; 月中的某-天
public static final int HOUR = 10; 时
public static final int MINUTE = 12; 分
public static final int SECOND = 13; 秒
public class Demo2 { public static void main(String[] args) { // damo1(); // demo2(); // demo3(); Calendar c = Calendar.getInstance(); Date date = c.getTime(); System.out.println(date);//Thu Mar 26 15:13:47 CST 2020 } /* public Date getTime(): 返回一个表示此Calendar时间值(从厉元到现在的毫秒偏移量)的Date对象 把日历对象转换为日期对象 */ /* public abstract void add(int field,int amount);根据日历的规则,为给定的日历字段添加或减去指定的时间量 参数: int amount:增加、减少的值 正数:增加 负数:减少 */ private static void demo3() { Calendar c = Calendar.getInstance(); System.out.println(c.get(Calendar.YEAR));//2020 c.add(Calendar.YEAR,2); System.out.println(c.get(Calendar.YEAR));//2022 } /* public void set(int field,int value)将给定的日历字段设置为给定的值。 */ private static void demo2() { Calendar c = Calendar.getInstance(); //重新设置日历年份 c.set(Calendar.YEAR,9999); int year = c.get(Calendar.YEAR); System.out.println(year); //同时设置年月日,可以使用set的重载的方法 c.set(8888,8,8); System.out.println(c.get(Calendar.YEAR)+" "+c.get(Calendar.MONTH)+" "+c.get(Calendar.DATE)); } /* public int get(int field)返回给定日历字段的值。 参数:传递指定的日历字段(YEAR,MONTH..) 返回值:日历字段代表具体的值 */ private static void damo1() { Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); System.out.println(year); int month = c.get(Calendar.MONTH); System.out.println(month+1);//西方的月份0-11 int date = c.get(Calendar.DATE); System.out.println(date); } }