10.Date日期时间类

目录

10.Date日期时间类

10.1.Date概述

10.2.Date常用三个方法

10.3.DateFormat类

10.3.1.什么是Format

10.3.2.DateFormat作用和使用

10.3.3.SimpleDateFormat如何格式化和解析

10.4.Date类练习


 


10.Date日期时间类

10.1.Date概述

Date日期工具类:

  • 1.java.util.Date:表示日期和时间的类。
  • 2.类 Date:表示特定的瞬间,精确到毫秒。
  • 3.毫秒:千分之一秒,1000毫秒=1秒
  • 4.毫秒值的作用:可以对时间和日期进行计算。比如:2099-01-03到2088-01-01中间一共有多少天?可以将日期转换为毫秒进行计算,计算完毕,把毫秒转换为日期。
  • 5.把日期转换为毫秒:System.currentTimeMillis()
    •   当前日期:2088-01-01
    •   时间原点(0毫秒):1970-01-01-00:00:00(英国格林威治)
    •   就是计算当前日期到时间原点之间一共经历了多少毫秒
  • 6.把毫秒值转化为日期   1天=24*60*60=86400秒=86400*1000=86400000毫秒
  • 7.注意:中国属于东八区,会把时间增加8个小时。  则时间原点:1970-01-01-08:00:00(中国)

10.2.Date常用三个方法

 Date():Date类的空参构造函数,获取当前系统的日期时间。
 Date(Long date):Date类的带参数构造函数,传递毫秒值,把毫秒值转换为Date日期。
 Long getTime():把日期转换为毫秒值,相当于System.currentTimeMills()方法 
                返回自1970年01月01日00:00:00GMT以来,此date对象表示的毫秒值
public class Date1 {
    public static void main(String[] args) {
        demo1();
        demo2();
        demo3();
    }

    public static void demo1(){
       /*
         Date类的空参构造函数,
         Date()获取当前系统的日期时间。
       */
        Date date=new Date();
        //打印Date类对象没有输出对象地址说明在Date类中重写了toString方法。
        System.out.println(date);
    }

    public static void demo2(){
        /*
        Date类的带参数构造函数
        Date(Long date):传递毫秒值,把毫秒值转换为Date日期。
       */
        Date date = new Date(123456789L);
        System.out.println(date);
    }

    public static void demo3(){
        /*
         Long getTime():把日期转换为毫秒值,相当于System.currentTimeMills()方法
         返回子1970年01月01日00:00:00GMT以来,此date对象表示的毫秒值
        */
        Date date = new Date();
        long time = date.getTime();
        System.out.println(time);

    }
}
package demo12;
import java.util.Date;

//日期和时间Date
public class DateMain {
    public static void main(String[] args) {
        //创建一个当前时间的Date
        Date date = new Date();
        System.out.println(date);
        //当前时间到时间原点毫秒数
        long time = date.getTime();
        System.out.println(time);
        //显示当前时间的前一天时间
        long time2 = date.getTime() - (24 * 60 * 60 * 1000);
        Date date1 = new Date(time2);//将毫秒转化成时间
        System.out.println(date1);
    }
}

10.3.DateFormat类

10.3.1.什么是Format

format:格式化

  • 1.java.text.Format:是一个用于格式化语言环境敏感的信息(如日期消息数字)的抽象基类
  • 2.Java平台为日期、消息和数字分别提供三个特殊的Format的子类:
    •   : DateFormat
    •   : MessageFormat
    •   : NumberFormat

10.3.2.DateFormat作用和使用

  • 1.java.text.DateFormat:是日期/时间格式化抽象类
  • 2.DateFormat作用和实现方法:
    •   作用:格式化(日期->文本) ,解析(文本->日期),用于格式化和解析日期字符串
    •   成员方法:
      • String format(Date date):按照指定模式,将Date日期,格式化为符合模式的字符串
      • Date parse(String source):把符合模式的字符串,解析为Date日期。
    • DateFormat类是一个抽象类,无法直接创建对象使用自身方法,
    • 可以使用DateFormat类子类java.text.SimpleDateFormat extends DateFormat.该类继承了父类Format,就可以调用父类方法format方法和parse方法。

10.3.3.SimpleDateFormat如何格式化和解析

  • 1.SimpleDateFormat类:
    • 构造函数:SimpleDateFormat(String pattern)
      • 函数参数:String pattern 表示传递的指定的模式。
      • 模式:区分大小写
        •  y   年
        •  M   月
        •  d   日
        •  H   时
        •  m   分
        •  s   秒
      • 根据对应的模式,会把模式转换为对应的日期和时间。
      • "yyyy-MM-dd HH:mm:ss"
      • "yyyy年MM月dd日 HH时mm分ss秒"
      • 注意:模式中的字母不能更改,连接模式的符号可以改变。
  • 2.使用DateFormat类中的format方法,把日期格式按指定模式转化为文本(字符串)
    •  使用步骤:
    • 1:创建SimpleDateFormat对象,构造方法中传递指定的模式。
    • 2:调用SimpleDateFormat对象中的方法format,按照构造方法中指定的模式,把Date日期格式化为符合模式的字符串(文本)。
  • 3.使用DateFormat类中的parse方法,把文本解析为日期。
    • 使用步骤:
    • 1:创建SimpleDateFormat对象,构造方法中传递指定的模式。
    • 2:调用SimpleDateFormat对象中的方法parse,把符合构造函数中模式的字符串,解析为日期
  • 4.注意:
    • public Date parse(String source) throws ParseException
    • 在DateFormat的parse方法中声明了一个异常叫解析异常ParseException,如果字符串和构造方法的模式不一样,那么程序就会抛出异常,调用一个抛出异常的方法,就必须处理这个异常,要么throws继续抛出异常,要么try..catch自己处理。
  • 5.关键代码:
   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   Date date = new Date();
   String d = sdf.format(date);
  
   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   Date date = sdf.parse("2019-08-22 16:16:45");

10.4.Date类练习

题目:

请使用日期时间相关的API,计算出一个人已经出生了多少天。

思路:

  •  1.获取当前时间对应的毫秒值
  •  2.获取自己出生日期对应的毫秒值
  •  3.两个时间相减(当前时间– 出生日期)
关键代码:
  : System.out.println("请输入出生日期 格式 YYYY-MM-dd");
  : String birthdayString = new Scanner(System.in).next();
  : SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  : Date birthdayDate = sdf.parse(birthdayString);    
  : Date todayDate = new Date();    
  : long birthdaySecond = birthdayDate.getTime();
  : long todaySecond = todayDate.getTime();
  : long second = todaySecond-birthdaySecond;    
  : System.out.println(secone/1000/60/60/24);



public static void function() throws Exception {
	System.out.println("请输入出生日期 格式 YYYY-MM-dd");
	// 获取出生日期,键盘输入
	String birthdayString = new Scanner(System.in).next();
	// 将字符串日期,转成Date对象
	// 创建SimpleDateFormat对象,写日期模式
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	// 调用方法parse,字符串转成日期对象
	Date birthdayDate = sdf.parse(birthdayString);	
	// 获取今天的日期对象
	Date todayDate = new Date();	
	// 将两个日期转成毫秒值,Date类的方法getTime
	long birthdaySecond = birthdayDate.getTime();
	long todaySecond = todayDate.getTime();
	long second = todaySecond-birthdaySecond;	
	if (second < 0){
		System.out.println("还没出生呢");
	} else {
		System.out.println(secone/1000/60/60/24);
	}

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值