Java--Data类

1.Data类

复制代码
java.util.Date.表示指定的时间信息,不支持国际化
构造方法
new Date():当前系统日期和时间
new Date(long):给定日期和时间
主要方法:
after(Date):判断当前日期对象是否在给定日期对象之后
before(Date):判断当前日期对象是否在给定日期对象之前
equals(Object):判断两个日期是否相等
compareTo(Date):比较两个日期的顺序,如果当前日期对象大于给定日期对象,返回正数,如果小于
给定日期对象,返回负数,如果等于给定日期对象,返回零

2. DataFormat

对日期类进行格化式和解析

DateFormat本身是一个抽象类,实例化的方式

一种是通过静态方法的调用,处理的是长日期和长时间类型

1.getDateInstance()

2.getTimeInstance()

3.getDateTimeInstance()

一种是通过创建子类对象

创建SimpleDateFormat对象,处理的是短日期和短时间类型

可以自定义格式

|----|---------------|
| 字母 | 日期或时间元素 |
| y | 年 |
| M | 月 |
| d | 月份中的天数 |
| E | 星期中的天数 |
| H | 小时数(24小时) |
| h | 小时数(12小时) |
| m | 分钟数 |
| s | 秒钟数 |
| a | Am/Pm/上午/下午标记 |
| S | 毫秒数 |

方法:

format(Data):将Data类型,格式化成字符串

parse(String):将字符串解析成Data类型

3.Calendar

一个抽象类

java 复制代码
​//获取实例对象
Calendar calendar=Calendar.getInstance();
        calendar.set(2000,Calendar.MAY,12);
        calendar.set(Calendar.HOUR_OF_DAY,9);


        //获取年份  月份  日期
        int year = calendar.get(Calendar.YEAR);
        System.out.println("year = " + year);
        int month = calendar.get(Calendar.MONTH)+1;//0-11
        System.out.println("month = " + month);
        int date = calendar.get(Calendar.DATE);
        System.out.println("date = " + date);
        int week = calendar.get(Calendar.DAY_OF_WEEK);//一周的第几天
        System.out.println("week = " + week);//从周日开始是第1天
        int day = calendar.get(Calendar.DAY_OF_MONTH);//一个月的第几天
        System.out.println("day = " + day);
        int dy = calendar.get(Calendar.DAY_OF_YEAR);
        System.out.println("dy = " + dy);
        int hour = calendar.get(Calendar.HOUR);//12小时制的
        System.out.println("hour = " + hour);
        int hour1=calendar.get(Calendar.HOUR_OF_DAY);//24小时制
        System.out.println("hour1 = " + hour1);
        int minute = calendar.get(Calendar.MINUTE);
        System.out.println("minute = " + minute);
        int second = calendar.get(Calendar.SECOND);
        System.out.println("second = " + second);*/

        //Calendar转Date
        Date time = calendar.getTime();
        System.out.println(DateUtil.getSystemDateTime(time));
        //Date转成Calender
        Date date= DateUtil.parse("yyyy-MM-dd HH:mm:ss","2012-01-31 10:10:23");
        calendar.setTime(date);

​

4.GregorianCalendar

格里高利历是公历的标准名称,教皇格里高利十三世于1582年颁布。公历纪元,又称"西元"

儒略历:公元前45年1月1日起执行的一种历法。一年12个月,大小月交替,四年一闰,平年365日,闰年366天。年平均长度365.25天。

1949年9月27日,中国政协通过,采用国际社会通用的西历和西元作业历法和纪年。

四年一闰,百年不闰,四百年一大闰

年均长度365天5小时49分12秒,按此计算方式,3000年左右误差一天。
判断闰年的方法 isLeapYear(int),返回一个boolean类型的值,1582年后,计算方式不同

5.JDK8新增日期工具类

LocalDate:获取本地日期

LocalTime:获取本地时间

LocalDateTime:获取本地日期和时间

单独获取日期时间类中的每个值

使用给定值修改日期

设置日期和时间的偏移量

Instant类

代表时间点,获取日期变更子午线时间

DateTimeFormatter格式化和解析

java 复制代码
 //将LocalDate转换成字符串String格式
        DateTimeFormatter formatter=DateTimeFormatter.ofPattern("yyyy年MM月dd日");
        LocalDate date=LocalDate.now();
        String s = formatter.format(date);
        System.out.println(s);
        //将LocalDateTime转换成字符串String格式
        formatter=DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
        LocalDateTime localDateTime = LocalDateTime.now();
        String s1 = formatter.format(localDateTime);
        System.out.println("s1 = " + s1);
        //将时间戳转换成字符串日期格式
        long x= Instant.now().toEpochMilli();
        LocalDateTime dateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(x)
                , ZoneId.systemDefault());
        String s2=formatter.format(dateTime);
        System.out.println("s2 = " + s2);
       /* System.out.println(ZoneId.systemDefault());
        System.out.println("dateTime = " + dateTime);*/

        //将字符解析成日期
        formatter=DateTimeFormatter.ofPattern("yyyy-MM-dd");
        String s4="2022-09-01";
        LocalDate parse1 = LocalDate.parse(s4, formatter);
        System.out.println("parse1 = " + parse1);
        //将字符解析成日期时间
        formatter=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String s3="2022-05-01 12:20:30";
        LocalDateTime parse = LocalDateTime.parse(s3,formatter);
        System.out.println("parse = " + parse);

Period计算两个"日期"之间的间隔,得到的是年月日,假设2022年9月2日和2021年2月1日去计算得到相关1年7月1天,没办法知道具体多少天

java 复制代码
LocalDate date1=LocalDate.of(1949,10,1);
        LocalDate date2=LocalDate.now();
        /*
        Period x = Period.between(date1, date2);
        System.out.println(x.getYears()); //获取相差年份
        System.out.println(x.getMonths()); //获取相差月份
        System.out.println(x.getDays()); //获取相差天数
        */
        //计算两个日期相差天数方法1
        long days = ChronoUnit.DAYS.between(date1, date2);
        System.out.println("days = " + days);
        //计算两个日期相差天数方法2
        long days1 = date2.toEpochDay() - date1.toEpochDay();
        System.out.println("days1 = " + days1);

Duration计算两个日期时间的间隔

java 复制代码
public class Test8 {
    public static void main(String[] args) {

        LocalDateTime dateTime=LocalDateTime.
                of(1922,7,10,10,10,5);
        LocalDateTime now=LocalDateTime.now();
        //计算方式1
        Duration duration = Duration.between(dateTime, now);
       /* System.out.println(duration.toDays());//计算两个日期时间相差的天数
        System.out.println(duration.toHours());//计算两个日期时间相差的小时
        System.out.println(duration.toSeconds());//计算两个日期时间相差的秒数
        System.out.println(duration.getSeconds());//和上面相同*/

        //计算方式2
        /*long days = dateTime.until(now, ChronoUnit.DAYS);
        System.out.println("days = " + days);
        long hours = dateTime.until(now, ChronoUnit.HOURS);
        System.out.println("hours = " + hours);
        long months = dateTime.until(now, ChronoUnit.MONTHS);
        System.out.println("months = " + months);*/
        //计算方式3
        long years = ChronoUnit.YEARS.between(dateTime, now);
        System.out.println("years = " + years);
        long hours = ChronoUnit.HOURS.between(dateTime, now);
        System.out.println("hours = " + hours);
        long  centuries= ChronoUnit.CENTURIES.between(dateTime, now);
        System.out.println("centuries = " + centuries);
    }
}

时间调节器

java 复制代码
public class Test9 {
    public static void main(String[] args) {
        LocalDate date=LocalDate.now();
        //获取本周一时间
        LocalDate date1 = date.with(DayOfWeek.MONDAY);
        //获取下周一时间
        date1=date.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
        //获取本月第一天
        date1=date.with(TemporalAdjusters.firstDayOfMonth());
        //获取本月最后一天
        date1=date.with(TemporalAdjusters.lastDayOfMonth());
        //获取本年第一天
        date1=date.with(TemporalAdjusters.firstDayOfYear());
        System.out.println(date1);
    }
}

Date类和LocalDate(LocalTime\LocalDateTime)转换

java 复制代码
​
public class Test10 {
    public static void main(String[] args) {
        //将LocalDate转成Date
        LocalDate date2=LocalDate.now();
        ZonedDateTime zonedDateTime1 = date2.atStartOfDay().atZone(ZoneId.systemDefault());
        Instant instant = zonedDateTime1.toInstant();
        Date date1=Date.from(instant);
        String s = new SimpleDateFormat("yyyy-MM-dd").format(date1);
        System.out.println(s);

        //将LocalDateTime转成Date类型

        LocalDateTime date=LocalDateTime.now();
        ZonedDateTime zonedDateTime = date.atZone(ZoneId.systemDefault());
        Instant instant1 = zonedDateTime.toInstant();
        Date date3=Date.from(instant1);
        String s1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date3);
        System.out.println(s1);

        //Date转成LocalDate
        Date date4=new Date();
        ZonedDateTime zonedDateTime = date4.toInstant().atZone(ZoneId.systemDefault());
        LocalDate date5=zonedDateTime.toLocalDate();
        System.out.println(date5);

        //Date转成LocalDateTime
        Date date6=new Date();
        ZonedDateTime zonedDateTime = date6.toInstant().atZone(ZoneId.systemDefault());
        LocalDateTime date7=zonedDateTime.toLocalDateTime();
        LocalTime time=zonedDateTime.toLocalTime();
        System.out.println(date7);
    }
}

​

制作不易,麻烦大家点个赞,写的不好的请各路大神指点

相关推荐
古希腊掌管学习的神23 分钟前
[LeetCode-Python版]相向双指针——611. 有效三角形的个数
开发语言·python·leetcode
赵钰老师23 分钟前
【R语言遥感技术】“R+遥感”的水环境综合评价方法
开发语言·数据分析·r语言
V+zmm1013429 分钟前
基于微信小程序的乡村政务服务系统springboot+论文源码调试讲解
java·微信小程序·小程序·毕业设计·ssm
就爱学编程31 分钟前
重生之我在异世界学编程之C语言小项目:通讯录
c语言·开发语言·数据结构·算法
Oneforlove_twoforjob1 小时前
【Java基础面试题025】什么是Java的Integer缓存池?
java·开发语言·缓存
emoji1111111 小时前
前端对页面数据进行缓存
开发语言·前端·javascript
xmh-sxh-13141 小时前
常用的缓存技术都有哪些
java
每天都要学信号1 小时前
Python(第一天)
开发语言·python
TENET信条1 小时前
day53 第十一章:图论part04
开发语言·c#·图论
生信圆桌1 小时前
【生信圆桌x教程系列】如何安装 seurat V5版本R包,最详细安装手册
开发语言·r语言