Date类

日期类

第一代类 Date

可以精确到毫秒,代表特定的瞬间

  1. Date 精确到毫秒

  2. SimpleDateFormat: 格式和解析日期的类

    1. 允许进行格式化(日期->文本)、(文本->日期)和规范化

常用方法

public class Date01 {
    public static void main(String[] args) throws ParseException {
        Date d1 = new Date();//获取当前时间
        Date d2 =new Date(222222222);//指定毫秒数获得
        System.out.println(d1.getTime());//获取某个时间段的毫秒数
​
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss E");
        String format = sdf.format(d1);//格式化日期,返回字符串
        System.out.println(format);
​
        //格式化
        // String->Date
        // sdf格式与String格式一致,否则会抛出转换异常。
        String s ="1996年01月02日 10:20:30 星期一";
        Date parse = sdf.parse(s);
        format = sdf.format(parse);
        System.out.println(format);
    }
}

第二代日期类

主要是Calendar类(日历)

  1. 是一个抽象类,为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONYH等日历字段之间的转换 提供一些方法,并为操作日历字段提供一些方法,

常用方法

public class Calendar01 {
    public static void main(String[] args) {
​
        //创建实例 getInstance()
        Calendar instance = Calendar.getInstance();
​
        // 获取日历的某个字段
        System.out.println("年: "+instance.get(Calendar.YEAR));
​
        //+1 默认是从0开始计算
        System.out.println("月: "+(instance.get(Calendar.MONTH)+1));
​
        System.out.println("日: "+instance.get(Calendar.DAY_OF_MONTH));
​
        // 若是24小时进制,则是HOUR_OF_DAY
        System.out.println("时: "+instance.get(Calendar.HOUR));
​
        System.out.println("分: "+instance.get(Calendar.MINUTE));
​
        System.out.println("秒: "+instance.get(Calendar.SECOND));
        
        //输出格式需要自己组合
    }
}

第三代日期类

前两代日期类的问题

  1. 可变性:像日期和时间这样的类应该是不可变的

  2. 偏移性: Date中的年份是从1900开始的,而月份都是从0开始

  3. 格式化:格式化对Date有用,Calendar则不行

  4. 他们都不是线程安全的,不能处理闰秒等(每隔2天,多出1s)

常见方法(JDK8加入的)

  1. LocalDate 只显示日期 年月日

  2. LocalTime 只显示时间 时分秒

  3. LocalDateTime 显示年月日-时间

public class LocalDate_ {
    public static void main(String[] args) {
​
        //获取当前时间
        LocalDateTime now = LocalDateTime.now();//LocalTime.now()
​
        // 返回年
        System.out.println(now.getYear());
        
        // 月
        System.out.println(now.getMonth());//英文
        System.out.println(now.getMonthValue());//数字
        
        //日
        System.out.println(now.getDayOfMonth());
        
        //时
        System.out.println(now.getHour());
        
        //分
        System.out.println(now.getMinute());
        
        //秒
        System.out.println(now.getSecond());
        
        //获取时分秒
        LocalTime now1 = LocalTime.now();
        
        //获取年月日
        LocalDate now2 = LocalDate.now();
    }
}

格式化

DateTimeFormat 格式化

//获取当前时间
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter dtf =DateTimeFormatter.ofPattern("yyyy年MM月dd日 hh:mm:ss");
String format = dtf.format(now);
System.out.println(format);

时间戳

提供一系列和Date类转换的方式

  1. Instant-->Date

    1. Date date = Date.from(intstant);

  2. Date -->instant

    1. Instant instant = Date.toInstant();

Instant now3 = Instant.now();
System.out.println(now3);
Date from = Date.from(now3);
​
Instant instant = from.toInstant();
System.out.println(instant);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值