您的位置:首页 > 汽车 > 时评 > Java--Data类

Java--Data类

2024/7/2 4:36:21 来源:https://blog.csdn.net/2302_80969025/article/details/139929898  浏览:    关键词: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秒钟数
aAm/Pm/上午/下午标记
S毫秒数

方法:

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

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

3.Calendar

一个抽象类

​//获取实例对象
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-11System.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转DateDate time = calendar.getTime();System.out.println(DateUtil.getSystemDateTime(time));//Date转成CalenderDate 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格式化和解析

 //将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天,没办法知道具体多少天

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()); //获取相差天数*///计算两个日期相差天数方法1long days = ChronoUnit.DAYS.between(date1, date2);System.out.println("days = " + days);//计算两个日期相差天数方法2long days1 = date2.toEpochDay() - date1.toEpochDay();System.out.println("days1 = " + days1);

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

public class Test8 {public static void main(String[] args) {LocalDateTime dateTime=LocalDateTime.of(1922,7,10,10,10,5);LocalDateTime now=LocalDateTime.now();//计算方式1Duration 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);*///计算方式3long 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);}
}

 时间调节器

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)转换

​
public class Test10 {public static void main(String[] args) {//将LocalDate转成DateLocalDate 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转成LocalDateDate date4=new Date();ZonedDateTime zonedDateTime = date4.toInstant().atZone(ZoneId.systemDefault());LocalDate date5=zonedDateTime.toLocalDate();System.out.println(date5);//Date转成LocalDateTimeDate date6=new Date();ZonedDateTime zonedDateTime = date6.toInstant().atZone(ZoneId.systemDefault());LocalDateTime date7=zonedDateTime.toLocalDateTime();LocalTime time=zonedDateTime.toLocalTime();System.out.println(date7);}
}​

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

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com