Java日期处理类Date详解
时间的基础知识
- 时区:整个地球分为二十四时区,每个时区都有自己的本地时间。
- 为了统一起见,使用一个统一的时间,称为全球标准时间(UTC,Universal Time Coordinated)。
- TC与格林尼治平均时(GMT,Greenwich Mean Time,也翻译成:格林威治标准时间)差不多一样
- CST(北京时间),北京时间,China standard Time,中国标准时间。在时区划分上,属东八区,比协调世界时早8小时,记为UTC+8。
- 时间戳:自1970年1月1日(08:00:00GMT)至当前时间的总秒数,它也被称为Unix时间戳(unix Timestamp),广泛的运用在知识产权保护、合同签字、金融帐务、电子报价投标、股票交易等方面
- 格式多种:2050-10-3110:11:11、2050/10/3110/10:10年、月、日、周几等
背景:程序代码中怎么表示时间呢?我需要获取当前时间怎么办
ava.util包提供了Date类来封装当前的日期和时间
构造函数
1
2
3
4
|
//当前时间 Date() //从1970年1月1日起的毫秒数作为参数 Date( long millisec) |
常见方法
1
2
3
4
5
6
|
//返回自1970年1月1日00:00:00GMT以来此Date对象表示的毫秒数。 long getTime() //调用此方法的Date对象在指定日期之后返回true,否则返回false。 boolean after(Date date) //调用此方法的Date对象在指定日期之前返回true,否则返回false。 boolean before(Date date) |
新版JDK8之时间日期处理类
Java8通过发布新的Date-Time API(JSR310)来进一步加强对日期与时间的处理
新增了很多常见的api,如日期/时间的比较,加减,格式化等
包所在位置 java.time
核心类
LocalDate:不包含具体时间的日期。
LocalTime:不含日期的时间。
LocalDateTime:包含了日期及时间。
LocalDate常用API
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
LocalDate today=LocalDate.now(); system.out.print1n( "今天日期:" +today); //获取年,月,日,周几 system.out.print1n( "现在是哪年:" +today.getYear()); system.out.print1n( "现在是哪月:" +today.getMonth()); System.out.print1n( "现在是哪月(数字):" +today.getMonthValue()); System.out.print1n( "现在是几号:" +today.getDayofMonth()); system.out.print1n( "现在是周几:" +today.getDayofweek()); //加减年份,加后返回的对象才是修改后的,旧的依旧是旧的LocalDate changeDate=today.plusYears(1); system.out.print1n( "加后是哪年:" +changeDate.getYear()); System.out.print1n( "旧的是哪年:" +today.getYear()); //日期比较 system.out.print1n( "isafter:" +changeDate.isAfter(today)); //getYear()int 获取当前日期的年份 //getMonth()Month获取当前日期的月份对象 //getMonthValue()int 获取当前日期是第几月 //getDayofweek()Dayofweek 表示该对象表示的日期是星期几 //getDayofMonth()int 表示该对象表示的日期是这个月第几天 //getDayofyear()int 表示该对象表示的日期是今年第几天 //withyear(int year)LocalDate 修改当前对象的年份 //withMonth(int month)LocalDate修改当前对象的月份 //withpayofMonth(int dayofMonth)LocalDate 修改当前对象在当月的日期 //plusYears(long yearsToAdd)Localpate 当前对象增加指定的年份数 //plusMonths(1ong monthsToAdd)LocalDate 当前对象增加指定的月份数 //plusweeks(1ong weeksToAdd)LocalDate 当前对象增加指定的周数 //plusDays(1ong daysToAdd)LocalDate 当前对象增加指定的天数 //minusYears(long yearsTosubtract)LocalDate 当前对象减去指定的年数 //minusMonths(1ong months ToSubtract)LocalDate当前对象减去注定的月数 //minusWeeks(long weeksTosubtract)LocalDate 当前对象减去指定的周数 //minusDays(1ong daysTosubtract)LocalDate当前对象减去指定的天数 //compareTo(ChronoLocalDate other)int 比较当前对象和other对象在时间上的大小,返回值如果为正,则当前对象时间较晚 //isBefore(ChronoLocalDate other)boolean比较当前对象日期是否在other对象日期之前 //isAfter(ChronoLocalDate other)boolean 比较当前对象日期是否在other对象日期之后 //isEqual(ChronoLocalDate other)boolean 比较两个日期对象是否相等 |
新版JDK8之时间日期格式化
为什么要时间日期做格式化
- 程序打印,或者网页显示时间日期格式,用户有不同的需求,则需要根据一定的规则进行格式化
常用的占位符
- y四位数年份
- M月d日
- h时在
- m分
- S毫秒
JDK8之后:引入线程安全的日期与时
1
2
3
4
5
6
|
LocalDateTime ldt = LocalDateTime.now(); System.out.println(ldt); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String ldtStr = dtf.format(ldt); System.out.println(ldtStr); |
获取指定的日期时间对象LocalDate Time ldt=LocalDate Time.of(2020,11,11,8,20,30);System.out.println(ldt);
计算日期时间差 java.time.Duration
1
2
3
4
5
6
7
8
9
10
11
|
LocalDateTime today = LocalDateTime.now(); System.out.println(today); LocalDateTime changeDate = LocalDateTime.of( 2020 , 10 , 1 , 10 , 40 , 30 ); System.out.println(changeDate); Duration duration = Duration.between( today,changeDate); //第⼆二个参数减第⼀一 个参数 System.out.println(duration.toDays()); //两个时间差的天数 System.out.println(duration.toHours()); //两个时间差的小时数 System.out.println(duration.toMinutes()); //两个时间差的分钟数 System.out.println(duration.toMillis()); //两个时间差的毫秒数 System.out.println(duration.toNanos()); //两个时间差的纳秒数 |
总结
到此这篇关于Java核心教程之常见时间日期的文章就介绍到这了,更多相关Java常见时间日期内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/ruan_luqingnian/article/details/113816109