方法名称:DateUtil.format(java.util.Date, java.time.format.DateTimeFormatter)(方法有问题,已反馈,官方已修正) 方法描述 根据特定格式格式化日期...然后,执行了format.format(date.toInstant()),代码可拆解成两部分: date.toInstant():返回Instant对象 DateTimeFormatter.format...会将Date对象首先转换为Instant,因为缺少时区,导致报错。...,赋予默认时区 return formatter.format(((Instant) time).atZone(ZoneId.systemDefault())); } 方法名称:DateUtil.formatDateTime...:2018年10月24日,否则返回二〇一八年十月二十四日 源码分析一 /** * 格式化为中文日期格式,如果isUppercase为false,则返回类似:2018年10月24日,否则返回二〇一八年十月二十四日
类的名称 描述 Instant 时间戳 Duration 计算两个时间差 LocalDate 只包含日期,比如:2018-02-05 LocalTime 只包含时间,比如:23:12:10 LocalDateTime...注意,这些方法返回一个全新的LocalTime实例,由于其不可变性,返回后一定要用变量赋值。...由于LocalDate也是不变类型,返回后一定要用变量赋值。...调用isBefore()方法时,如果给定日期小于当前日期则返回true。...下面这个例子展示了如何把本时区的时间转换成另一个时区的时间。
1.2 基本用法 1.2.1 未使用和使用Lambda表达式的区别 @Slf4j public class TestLambda { //未使用和使用lambda表达式,对比...1.2.3.1 未使用 lambda 表达式,用法:带多个参数,有返回值 // 借助Comparator接口,讲解多个参数 Comparator comparator1 = new...false 3.12 时区处理 3.12.1 获取系统默认时区 // 获取系统默认时区 log.info("默认时区:{}", ZoneId.systemDefault()); //默认时区:Asia...dateTimeFormatter = DateTimeFormatter.ofPattern(pattern); return dateTimeFormatter.format(temporal...dateTimeFormatter); } /** * 将Date转换为LocalDatetime,系统默认时区 * * @param date 指定日期对象
SimpleDateFormat("yyyy-MM-dd"); } }; 说明:如果是 JDK8 的应用,可以使用 Instant 代替 Date,LocalDateTime 代替 Calendar, DateTimeFormatter...那我们就看看DateTimeFormatter怎么让Date和String互转的 // Date转String Date date = new Date(); LocalDateTime localDateTime...例如: DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy MM dd"); String text = date.toString...ZoneId :输出时区ID,如“Europe / Paris”。 如果字母数为2,则输出时区ID。 任何其他字母数字抛出IllegalArgumentException 。...区域名称 :输出时区ID的显示名称。 如果字母数为1,2或3,则输出短名称。 如果字母数为4,则输出全名。 五个或更多的字母抛出IllegalArgumentException 。
此外,甚至Date类的toString方法返回的字符串也容易误导人。以我们的例子而言,它的返回值中甚至还包含了JVM的默认时区CET,即中欧时间(Central Europe Time)。...注意,下面的这段代码中所有的方法都返回一个修改了属性的对象。它们都不会修改原来的对象!...DayOfWeek.SUNDAY)); LocalDate date3 = date2.with(lastDayOfMonth()); 使用TemporalAdjuster我们可以进行更加复杂的日期操作,而且这些方法的名称也非常直观...)); 时区 时区是按照一定的规则将区域划分成的标准时间相同的区间。...可以用绝对或者相对的方式操作日期和时间,操作的结果总是返回一个新的实例,老的日期时间对象不会发生变化。
方法 描述 now() 静态方法,返回默认UTC时区的Instant类的对象 ofEpochMilli(long epochMilli) 静态方法,返回在1970-01-01 00:00:00基础上加上指定毫秒数之后的...如:ofPattern(“yyyy-MM-dd hh:mm:ss”) 方 法 描 述 ofPattern(String pattern) 静态方法,返回一个指定字符串格式的DateTimeFormatter...:ZondId和ZonedDateTime ZoneId:该类中包含了所有的时区信息,一个时区的ID,如 Europe/Paris ZonedDateTime:一个在ISO-8601日历系统时区的日期时间...其中每个时区都对应着ID,地区ID都为“{区域}/{城市}”的格式,例如:Asia/Shanghai等 常见时区ID: Asia/Shanghai UTC America/New_York 可以通过...ZondId获取所有可用的时区ID: @Test public void test01() { //需要知道一些时区的id //Set是一个集合,容器 Set<String
Clock Clock 类提供了访问当前日期和时间的方法,Clock 是时区敏感的,可以用来取代 System.currentTimeMillis() 来获取当前的微秒数。...) 在新 API 中,时区使用 ZoneId 来表示,可以很方便的使用静态方法 of 来获取到。...它有一个名为 getAvailableZoneIds 的静态方法,它返回所有区域的标识符。...LocalTime(本地时间) LocalTime 定义了一个没有时区信息的时间。下面的例子使用前面代码创建的时区创建了两个本地时间。...另外要注意的是这些对象是不可变的,操作返回的总是一个新实例。
1900,getMonth() 返回的月份是 0~11 分别表示 1~12 月,所以要加 1,而 getDate() 返回的日期范围是 1~31,又不能加 1。...,返回的月份仍然要加 1,返回的星期要特别注意,1~7 分别表示周日、周一至周六。...LocalDateTime 表示一个本地日期和时间,本地日期和时间通过 now() 获取,且总是以当前默认时区返回,和旧 API 不同,LocalDateTime、LocalDate 和 LocalTime...要创建一个 ZonedDateTime 对象,有以下几种方法: 通过 now() 方法返回当前时间: ZonedDateTime zbj = ZonedDateTime.now(); // 默认时区 ZonedDateTime...Java 提供的 System.currentTimeMillis() 返回的就是以毫秒表示的当前时间戳。
编号 类的名称 描述 1 Instant 时间戳 2 Duration 持续时间,时间差 3 LocalDate 只包含日期,比如:2018-02-05 4 LocalTime 只包含时间,比如:23:...带时区的时间 9 Clock 时钟,比如获取目前美国纽约的时间 10 java.time.format.DateTimeFormatter 时间格式化 Java 8中获取今天的日期 Java 8 中的...注意,这些方法返回一个全新的LocalTime实例,由于其不可变性,返回后一定要用变量赋值。...由于LocalDate也是不变类型,返回后一定要用变量赋值。...下面这个例子展示了如何把本时区的时间转换成另一个时区的时间。
J W 每月的一周 数字 4 E 星期几 文本 Tue; Tuesday; T d 日期 数字 15 H 小时 数字 22 m 分钟 数字 34 s 秒 数字 55 S 秒的分数 数字 345 z 时区名称...时区名称 Pacific Standard Time; PST Z 时区偏移 时区偏移 -0800 V 时区 ID(JDK8) 时区 ID America/Los_Angeles; Z; -08:30...今天,UTC 是首选的方法,但是 UTC 和 GMT 在大多数情况下应该返回相同的结果。 为了获得 UTC 和 GMT 的所有时区,解决方案应该关注 JDK8 前后的实现。...此方法返回具有不同时区的此日期时间的副本,并保留以下瞬间: public static List localTimeToAllTimeZones() { List...); 还有一个TickClock,它返回给定时区整秒的当前Instant滴答声: Clock tickClock = Clock.tickSeconds(ZoneId.of("Europe/Bucharest
不再像Date一样根据本地时区进行转换。...获取当前月份 getDayOfMonth 获取当前日期 getDayOfYear 获取当前是一年中的第几天 isLeapYear 是否闰年 lengthOfYear 一年有多少天 getDayOfWeek 返回星期信息...当然,LocalTime也有很多类似的方法提供: 方法名称 说明 getHour 获取当前小时数 getMinute 获取当前分钟数 getSecond 获取当前秒数 getNano 获取当前纳秒数 withHour...LocalDateTime则采用本地的时区。ZnodeDateTime则可以根据我们需要的时区进行转换。...不过需要指定时区。
boolean after(Object when):判断此 Calendar 表示的时间是否在指定时间之后,返回判断结果。...boolean before(Object when):判断此 Calendar 表示的时间是否在指定时间之前,返回判断结果。...,返回LocalDate对象。...static LocalTime now():LocalTime 静态工厂方法,该方法使用默认时区获得当前时间,返回LocalTime对象。...static LocalDateTime now():LocalDateTime 静态工厂方法,该方法使用默认时区获得当前日期时间,返回 LocalDateTime 对象。
编号 类的名称 描述 1 Instant 时间戳 2 Duration 持续时间,时间差 3 LocalDate 只包含日期,比如:2018-02-05 4 LocalTime 只包含时间,比如:23:...带时区的时间 9 Clock 时钟,比如获取目前美国纽约的时间 10 java.time.format.DateTimeFormatter 时间格式化 示例1:Java 8中获取今天的日期 Java...注意,这些方法返回一个全新的LocalTime实例,由于其不可变性,返回后一定要用变量赋值。...由于LocalDate也是不变类型,返回后一定要用变量赋值。...下面这个例子展示了如何把本时区的时间转换成另一个时区的时间。
类的名称 描述 Instant 时间戳 Duration 持续时间,时间差 LocalDate 只包含日期,比如:2018-02-05 LocalTime 只包含时间,比如:23:12:10 LocalDateTime...注意,这些方法返回一个全新的LocalTime实例,由于其不可变性,返回后一定要用变量赋值。...由于LocalDate也是不变类型,返回后一定要用变量赋值。...现在有一系列单独的类如ZoneId来处理特定时区,ZoneDateTime类来表示某时区下的时间。...下面这个例子展示了如何把本时区的时间转换成另一个时区的时间。
序号 方法定义 描述 1 static LocalDate now() 返回默认时区下的当前日期对象 2 int getYear() 返回年份,从-999999999-01-01~+999999999-...LocalTime常见方法如下: 序号 方法定义 描述 1 static LocalTime now() 返回默认时区下的当前时间对象 2 int getHour() 返回小时,0-23 3 int getMinute...LocalDateTime常见方法如下: 序号 方法定义 描述 1 static LocalDateTime now() 返回默认时区下的当前日期对象 2 int getYear() 返回年份,从-999999999...Instant类的常见方法如下: 序号 方法定义 描述 1 static Instant now() 静态方法,返回默认UTC时区的Instant类的对象 2 static Instant ofEpochMillo...DateTimeFormatter类常见方法如下: 序号 方法定义 描述 1 static DateTimeFormatter ofPattern(String pattern) 静态方法,返回一个DateTimeFormatter
基本概念 本地时间 即所处地区所处时区的时间; 时区 要准确表达时间,还要依赖时区,时区表达方式主要有如下三种: GMT 或 UTC 加时区偏移表示 ,如 GMT+08:00 表示东八区; 缩写 ,如...:ZonedDateTime 时刻:Instant 时区:ZoneId、ZoneOffset 时间间隔:Duration 格式化:DateTimeFormatter 基本用法 import java.time...相较于 SimpleDateFormat ,DateTimeFormatter 不仅是不变对象,还是线程安全的,有如下两种使用方式; 传入格式化字符串 DateTimeFormatter formatter...= DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") 传入格式化字符串同时指定 Locale DateTimeFormatter formatter...usFormatter.format(zdt)); } } Instance 时间戳在 java.time 中用 Instant 类型表示,相当于 java.util 中的 currentTimeMills() ,返回以毫秒表示的当前时间戳
新时间对象: 1.LocalDate表示年月日 2.LocalTime表示时分秒 3.LocalDateTime表示年月日时分秒 4.Instant:表示时刻,不直接对应年月日信息,需要通过时区转换 5....ZonedDateTime: 表示特定时区的日期和时间 6.ZoneId/ZoneOffset:表示时区 1、获取对象的方法 //通过静态方法now()获取当前时间 LocalDate...now = LocalDateTime.now(); int year = now.getYear();//年 Month month = now.getMonth();//获取的是哪一月,返回的是一个枚举类型...System.out.println(localDateTime);//2019-10-14T20:51:31.175 7.添加、减去时间量的方法 //添加年月日时分秒的方法,plus系列的方法 //每次添加完时间量,都会返回一个新的...LocalDateTime localDateTime2 = now.plusDays(10);//增加10天 //减去年月日时分秒的方法,minus系列的方法 //每次减完时间量,也都会返回一个新的
设计缺陷包括: 它的名称具有误导性: 它并不代表一个日期,而是代表时间的一个瞬间。所以它应该被称为Instant——正如它的java.time等价物一样。...它是非最终的: 这鼓励了对继承的不良使用,例如java.sql.Date(这意味着代表一个日期,并且由于具有相同的短名称而也令人困惑) 它是可变的: 日期/时间类型是自然值,可以通过不可变类型有效地建模...它的方法命名不明确: getDate()返回月份中的某一天,并getDay()返回星期几。给这些更具描述性的名字有多难?...LocalDateTime 表示没有时区信息的日期和时间,它不能直接转换为时间戳,除非你将其与时区结合使用(例如通过 ZonedDateTime)。...ZonedDateTime 包含时区信息的日期和时间,它更类似于 Calendar,因为 Calendar 也包含时区信息。
java8 新日期时间API((一)JSR-310:ZoneId 时区和偏移量) java8 新日期时间API((二)JSR-310:常用的日期时间API) java8 新日期时间API((三)JSR...-310:格式化和解析) java8 新日期时间API((四)JSR-310:常用计算工具) java8 新日期时间API((五)JSR-310:实战+源码分析) 时区的规则发生变化时,如何同步JDK的时区规则...:2018年10月24日,否则返回二〇一八年十月二十四日 方法明细 方法名称:cn.hutool.core.date.DateUtil.formatLocalDateTime(java.time.LocalDateTime...date date 被格式化的日期 DateTimeFormatter format format {@link SimpleDateFormat} 返回值: 格式化后的字符串 参考案例: //...根据特定格式格式化日期 String str = "2021-05-16"; DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd
t):如果调用对象包含值,就返回该值,否则返回t * orElseGet(Supplier s):如果调用对象包含值,就返回该值,否则返回 Lambda表达式的返回值 */...Optional中的值 if(op1.isPresent()){ String s1 = op1.get(); System.out.println("用户名称...dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String format1 = now.format...Java8 中加入了对时区的支持,LocalDate、LocalTime、LocalDateTime是不带时区的,带时区的日期时间类分别为:ZonedDate、ZonedTime、ZonedDateTime...ZoneId:该类中包含了所有的时区信息 /** * 时区操作 */ @Test public void test01(){ // 1.获取所有的时区id
领取专属 10元无门槛券
手把手带您无忧上云