阶段二-Day10-日期类

发布时间:2024年01月03日

日期类结构:

1.java.util.Date是日期类

2.DateFormat是日期格式类、SimpleDateFormat是日期格式类的子类

Timezone代表时区

3.Calendar是日历类,GregorianCalendar是日历的子类

一. 常用类-Date

1.1 Date构造方法

Date(long date) 使用给定的毫秒时间价值构建 Date对象

Date() 返回系统的当前时间

日期是有时间的起点的,以地理位置格林尼治时间1970-01-01 00:00:00 为标准,视为时间的起点;Date(long date) 指的是距离标准时间过了多少毫秒;

public class Test01 {
    public static void main(String[] args) {
        Date date = new Date();
        //创建对象,返回当前系统的时间
        System.out.println(date);
        //创建距离格林尼治时间标准时间过了1000毫秒的日期
        Date date2 = new Date(1000L);
        System.out.println(date2);
    }
}

1.2 Date类常用方法

public class Test01 {
    public static void main(String[] args) {
        //1) 创建Date对象返回当前时间
        Date date = new Date();
        System.out.println(date);
        //2) 获得Date时间距离1970-1-1 00:00:00 经过的毫秒数
        long time = date.getTime();
        System.out.println(time);
        //3) 调用System.currentTimeMillis()返回当前时间对应的毫秒数
        long l = System.currentTimeMillis();
        System.out.println(l);
        //4) 根据毫秒数创建日期对象
        Date date1 = new Date(l);
        System.out.println(date1);
    }
}

1.3?常用的日期相关类-java.util.SimpleDateFormat

format方法
public class Test {
    public static void main(String[] args) {
        Date date = new Date();
        //定义字符串标准
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //把日期类变成字符串
        String s = sdf.format(date);
        System.out.println(s);
    }
}
parse方法
public class Test {
    public static void main(String[] args) throws ParseException {
        String text = "2023年8月21日 20:52:58";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年M月dd日 HH:mm:ss");
        Date date = sdf.parse(text);
        System.out.println(date);
    }
}

1.4?常用的日期相关类-java.util.Calender

创建Calender日历对象

public class Test {
    public static void main(String[] args) {
        //获取实例对象:静态方法,推荐
        //1.创建对象
        //Calendar是抽象类,所以不能直接创建对象
        //使用getInstance()方法创建对象
        Calendar calendar = Calendar.getInstance();
        //2.set方法设置日历信息
        //设置年
        calendar.set(Calendar.YEAR,2019);
        //日历用0-11 表示  1-12月
        calendar.set(Calendar.MONTH,1);
        //设置日 一月中的天数
        calendar.set(Calendar.DAY_OF_MONTH,8);
        //设置一天中的小时数
        calendar.set(Calendar.HOUR_OF_DAY,15);
        //设置一小时的分钟数
        calendar.set(Calendar.MINUTE,20);
        //设置一分钟的秒数
        calendar.set(Calendar.SECOND,58);
        calendar.set(2018,1,2);
        calendar.set(2017,1,2,22,20,20);
        //3.get方法获取日历信息
        System.out.println(calendar.get(Calendar.YEAR));
        //日历用0-11 表示  1-12月
        System.out.println(calendar.get(Calendar.MONTH));
        System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
        System.out.println(calendar.get(Calendar.HOUR_OF_DAY));
        System.out.println(calendar.get(Calendar.MINUTE));
        System.out.println(calendar.get(Calendar.SECOND));
        //4.将日历转为日期
        Date date = calendar.getTime();
        System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date));

    }
}

二. 新日期类

旧日期类计算复杂存在线程安全问题

2.1 日期初始化操作

通过now方法 获得

public class Test {
    public static void main(String[] args) {
        //获得Instant对象,获取格林尼治的当前时间
        Instant instant = Instant.now();
        System.out.println(instant);

        //获得LocalDate,获得本地的当前年月日
        LocalDate localDate = LocalDate.now();
        System.out.println(localDate);

        //获得LocalTime,获得本地的当前时分秒
        LocalTime localTime = LocalTime.now();
        System.out.println(localTime);

        //获得LocalDateTime实例,获得本地的当前年、月、日、时、分、秒
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println(localDateTime);

        //使用now方法创建ZonedDateTime实例,获得本地时区的年、月、日、时、分、秒
        ZonedDateTime zonedDateTime = ZonedDateTime.now();//我国时间以东8区为准,也就是所说的北京时间。按东8区计算
        System.out.println(zonedDateTime);
    }
}
public class Test2 {
    public static void main(String[] args) {
        Year year = Year.now();
        System.out.println(year);
        YearMonth month = YearMonth.now();
        System.out.println(month);
        MonthDay day = MonthDay.now();
        System.out.println(day);
    }
}

通过of方法 获得

public class Test {
    public static void main(String[] args) {
        //根据参数创建本地日期对象
        LocalDate date = LocalDate.of(2023, 12, 1);
        System.out.println(date);
        //根据参数创建本地时间对象
        LocalTime localTime = LocalTime.of(9,12,12,311);
        System.out.println(localTime);
        //根据参数创建本地日期加时间对象
        LocalDateTime localDateTime = LocalDateTime.of(2023,12,12,12,12,12);
        System.out.println(localDateTime);
        //根据日期和时间创建本地日期时间对象
        LocalDateTime localDateTime1 = LocalDateTime.of(date,localTime);
        System.out.println(localDateTime1);
    }
}

未完待续

文章来源:https://blog.csdn.net/m0_59163770/article/details/132416095
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。