时间日期类(1)——Data类、DateFormat类、SimpleDateFormat类

一、Data类

时间日期类;
导包:import java.util.Date;
类 Date 表示特定的瞬间,精确到毫秒。

  1. 表示格式:
    在类 Date 所有可以接受或返回年、月、日期、小时、分钟和秒值的方法中,将使用下面的
    表示形式:
  • 份 y 由整数 y - 1900 表示。
  • 份由从 0 至 11 的整数表示;0 是一月、1 是二月等等;因此 11 是十二月。
  • 期(一月中的某天)按通常方式由整数 1 至 31 表示。
  • 小时由从 0 至 23 的整数表示。因此,从午夜到 1 a.m. 的时间是 0 点,从中午到 1 p.m. 的时间是 12 点。
  • 分钟按通常方式由 0 至 59 的整数表示。
  • 由 0 至 61 的整数表示;值 60 和 61 只对闰秒发生,尽管那样,也只用在实际正确跟踪闰秒的 Java 实现中。于按当前引入闰秒的方式,两个闰秒在同一分钟内发生是极不可能的,但此规范遵循 ISO C 的日期和时间约定。
  1. 时间基准:
    1970 年 1 月 1 日 00:00:00表示0毫秒 (英国格林威治的标准时间)
    中国属于东八区,所以在转化过程中会自动加上八个小时

  2. 构造方法
    (1)空参构造:

    Date() //获取当前系统的日期时间          
    

    例:

     Date data=new Date();
            System.out.println(data);
            //Sat Aug 01 10:11:58 GMT+08:00 2020 其中GMT表示格林威治标准时间,GMT+08:00就表示东八区的中国时间
    

    (2)带参数的构造方法

    Date(long date) 
    //以标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。
    

    例:

     Date data2=new Date(0L);//0就是标准基准时间,加L是因为是long类型的参数,默认是int到L不会自动类型转化,不加L可能丢失精度
            System.out.println(data2);//Thu Jan 01 08:00:00 GMT+08:00 1970
    
  3. 把日期转化为毫秒

System.out.println(System.currentTimeMillis());//1596247918259  是long类型的数据 表示从时间基准开始到现在经历了多少毫秒
Date data=new Date();
System.out.println(data.getTime());//使用date的方法获取时间

一、DataFormat类

DataFormat类:日期格式化类,是日期/时间格式化子类的抽象类
格式化:把日期按指定格式转化为String对象
解析:把String对象按指定格式转化为日期
导包:import java.text.Format;

  1. 构造方法
    protected  DateFormat() 
             // 创建一个新的 DateFormat。
    
  2. 成员方法:
    String format(Date date) 
              //格式化:将一个 Date 格式化为日期/时间字符串。
    Date parse(String source) 
              //解析:从给定字符串的开始解析文本,以生成一个日期。  
    

三、SimpleDateFormat类

DataFormat类是一个抽象类,不能直接创建对象使用,必须通过继承来使用。JAVA jdk提供了SimpleDateFormat子类以供使用
导包:java.text.SimpleDateFormat

  1. 构造方法
SimpleDateFormat(String pattern) 
          //用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
          //区分大小写
  1. pattern格式
pattern字母含义示例
yYear 1996; 96
M年中的月份Month July; Jul; 07
d月份中的天数Number 10
H一天中的小时数(0-23)Number 0
m小时中的分钟数Number 30
s分钟中的秒数Number 55
S毫秒数Number 978
ham/pm 中的小时数(1-12) Number 12

示例:"yyyyy.MM.dd HH:mm:ss"

  1. 示例:
package linxu.day12;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class demomain {
    public static void main(String[] args) throws ParseException {
    //throws ParseException 抛出异常
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date();
        String s = simpleDateFormat.format(date);
        System.out.println(s);
        System.out.println(date);
        Date date1 = simpleDateFormat.parse("2020-08-01 10:52:42");//parse方法抛出了异常
        System.out.println(date1);
    }
}
  1. parse异常
    parse的方法声明:public Date parse(String source) throws ParseException
    在参数列表之后加了 throws ParseException。表示parse解析异常
    如果参数列表的字符串和构造方法中的解析模式不一致,会抛出异常。
    调用抛出异常的方法,那么调用这个方法的方法就必须处理这个异常
    要么也抛出异常:throws
    要么处理异常:try…catch
    快捷方法:光标放在perse方法名上,ALT+回车,第一个选项是抛出异常,第二个是处理异常
    在这里插入图片描述

四、例题:计算出生天数

package linxu.day12;
//导包
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class demo2main {
    public static void main(String[] args) throws ParseException {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入你的出生日期:格式为yyyy-MM-dd");
        String s=scanner.next();//输入出生日期,是一个字符串
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
        Date date=simpleDateFormat.parse(s);//日期解析
        long birth=date.getTime();//转化为毫秒
        Date date1birth=new Date();//空参构造默认为系统时间
        long today=date1birth.getTime();//转化为毫秒当前时间的毫秒值
        long dis=(today-birth)/24/3600/1000;//计算出生天数
        System.out.println(dis+"天");//7799天

    }
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值