在我之前的文章《【整理】Java 8新特性总结 》中有提到Date/Time API (JSR 310)对日期与时间的处理。它将服务端对时间的处理进行了统一,使得对时间的处理更加规范和统一。

  本文主要是对Date/Time API开发过程中的小结。

Date 和LocalDate、LocalDateTime、LocalTime之间的转换

  Date转LocalDate、LocalDateTime、LocalTime

public static void main(String[] args) {
Date date = new Date();
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault(); // atZone()方法返回在指定时区从此Instant生成的ZonedDateTime。
LocalDate localDate = instant.atZone(zoneId).toLocalDate();
LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
LocalTime localTime = instant.atZone(zoneId).toLocalTime();
System.out.println("Date = " + date);//Wed Apr 24 14:43:25 CST 2019
System.out.println("LocalDate = " + localDate);//2019-04-24
System.out.println("LocalDateTime = " + localDateTime);//2019-04-24T14:43:25.030
System.out.println("LocalTime = " + localTime);//14:43:25.030
}

  LocalDateTime转Date

public static void main(String[] args) {

    LocalTime localTime = LocalTime.now();
LocalDate localDate = LocalDate.now();
LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
ZoneId zone = ZoneId.systemDefault();
Instant instant = localDateTime.atZone(zone).toInstant();
java.util.Date date = Date.from(instant);
System.out.println("LocalDate = "+localDate);//2019-04-24
System.out.println("LocalTime = "+localTime);//14:43:25.030
System.out.println("LocalDateTime = "+localDateTime);//2019-04-24T14:43:25.030
System.out.println("Date = "+date);//Wed Apr 24 14:43:25 CST 2019
}

LocalDateTime与LocalTime、LocalDate之间的转换

  LocalDateTime转LocalTime、LocalDate

public static void main(String[] args) {

    LocalDateTime localDateTime = LocalDateTime.now();
LocalDate localDate = localDateTime.toLocalDate();
LocalTime localTime = localDateTime.toLocalTime();
System.out.println("LocalDateTime = "+localDateTime);//2019-04-24T14:43:25.030
System.out.println("LocalDate = "+localDate);//2019-04-24
System.out.println("LocalTime = "+localTime);//14:43:25.030
}

  LocalDate转LocalDateTime

public static void main(String[] args) {

  LocalDate localDate =LocalDate.now();
LocalDateTime localDateTime = localDate.atStartOfDay();
LocalDateTime localDateTime2 = localDate.atTime(LocalTime.now());
LocalDateTime localDateTime1 = LocalDateTime.of(localDate,LocalTime.MAX);
System.out.println(localDate);//2019-04-24
System.out.println(localDateTime);//2019-04-24T00:00
System.out.println(localDateTime1);//2019-04-24T23:59:59.999999999
System.out.println(localDateTime2);//2019-04-24T15:18:41.823
}

String和LocalDateTime之间的转换

  LocalDateTime转String

public static void main(String[] args) {
   //定义时间格式化   
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy.MM.dd HH:mm");
LocalDateTime ldt = LocalDateTime.now();
String time = dtf.format(ldt);
String time1 = dtf1.format(ldt);
System.out.println(time);//2019-04-24 15:58:04
System.out.println(time1);//2019.04.24 15:58
}

 String转LocalDateTime

public static void main(String[] args) {
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime localDateTime = LocalDateTime.parse("2019-04-24 15:33:23",dtf);
System.out.println(localDateTime);//2019-04-24T15:33:23
}

时间戳和LocalDateTime之间的转换

  localDateTime转时间戳

public static void main(String[] args) {

  System.out.println(LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli());//1556095208585  毫秒
  System.out.println(LocalDateTime.now().toInstant(ZoneOffset.of("+8")).getEpochSecond());//1556095208585 秒
}

  时间戳转localDateTime

public static void main(String[] args) {
Long timestamp = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).getEpochSecond();
LocalDateTime time2 =LocalDateTime.ofEpochSecond(timestamp,0,ZoneOffset.ofHours(8));
   System.out.println(time2);
}

其他

LocalDateTime.now().plus(100000, ChronoUnit.DAYS)
同 LocalDateTime.now().plusDays(100000)
LocalDateTime.now().get(ChronoField.DAY_OF_MONTH)
同 LocalDateTime.now().getDayOfMonth()
ChronoUnit枚举
public enum ChronoUnit implements TemporalUnit {

    NANOS("Nanos", Duration.ofNanos(1)),

    MICROS("Micros", Duration.ofNanos(1000)),

    MILLIS("Millis", Duration.ofNanos(1000_000)),

    SECONDS("Seconds", Duration.ofSeconds(1)),

    MINUTES("Minutes", Duration.ofSeconds(60)),

    HOURS("Hours", Duration.ofSeconds(3600)),

    HALF_DAYS("HalfDays", Duration.ofSeconds(43200)),

    DAYS("Days", Duration.ofSeconds(86400)),

    WEEKS("Weeks", Duration.ofSeconds(7 * 86400L)),

    MONTHS("Months", Duration.ofSeconds(31556952L / 12)),

    YEARS("Years", Duration.ofSeconds(31556952L)),

    DECADES("Decades", Duration.ofSeconds(31556952L * 10L)),

    CENTURIES("Centuries", Duration.ofSeconds(31556952L * 100L)),

    MILLENNIA("Millennia", Duration.ofSeconds(31556952L * 1000L)),

    ERAS("Eras", Duration.ofSeconds(31556952L * 1000_000_000L)),

    FOREVER("Forever", Duration.ofSeconds(Long.MAX_VALUE, 999_999_999));

    private final String name;
private final Duration duration; private ChronoUnit(String name, Duration estimatedDuration) {
this.name = name;
this.duration = estimatedDuration;
} }
ChronoField枚举
public enum ChronoField implements TemporalField {

    NANO_OF_SECOND("NanoOfSecond", NANOS, SECONDS, ValueRange.of(0, 999_999_999)),

    NANO_OF_DAY("NanoOfDay", NANOS, DAYS, ValueRange.of(0, 86400L * 1000_000_000L - 1)),

    MICRO_OF_SECOND("MicroOfSecond", MICROS, SECONDS, ValueRange.of(0, 999_999)),

    MICRO_OF_DAY("MicroOfDay", MICROS, DAYS, ValueRange.of(0, 86400L * 1000_000L - 1)),

    MILLI_OF_SECOND("MilliOfSecond", MILLIS, SECONDS, ValueRange.of(0, 999)),

    MILLI_OF_DAY("MilliOfDay", MILLIS, DAYS, ValueRange.of(0, 86400L * 1000L - 1)),

    SECOND_OF_MINUTE("SecondOfMinute", SECONDS, MINUTES, ValueRange.of(0, 59), "second"),

    SECOND_OF_DAY("SecondOfDay", SECONDS, DAYS, ValueRange.of(0, 86400L - 1)),

    MINUTE_OF_HOUR("MinuteOfHour", MINUTES, HOURS, ValueRange.of(0, 59), "minute"),

    MINUTE_OF_DAY("MinuteOfDay", MINUTES, DAYS, ValueRange.of(0, (24 * 60) - 1)),

    HOUR_OF_AMPM("HourOfAmPm", HOURS, HALF_DAYS, ValueRange.of(0, 11)),

    CLOCK_HOUR_OF_AMPM("ClockHourOfAmPm", HOURS, HALF_DAYS, ValueRange.of(1, 12)),

    HOUR_OF_DAY("HourOfDay", HOURS, DAYS, ValueRange.of(0, 23), "hour"),

    CLOCK_HOUR_OF_DAY("ClockHourOfDay", HOURS, DAYS, ValueRange.of(1, 24)),

    AMPM_OF_DAY("AmPmOfDay", HALF_DAYS, DAYS, ValueRange.of(0, 1), "dayperiod"),

    DAY_OF_WEEK("DayOfWeek", DAYS, WEEKS, ValueRange.of(1, 7), "weekday"),
ALIGNED_DAY_OF_WEEK_IN_MONTH("AlignedDayOfWeekInMonth", DAYS, WEEKS, ValueRange.of(1, 7)),
ALIGNED_DAY_OF_WEEK_IN_YEAR("AlignedDayOfWeekInYear", DAYS, WEEKS, ValueRange.of(1, 7)), DAY_OF_MONTH("DayOfMonth", DAYS, MONTHS, ValueRange.of(1, 28, 31), "day"), DAY_OF_YEAR("DayOfYear", DAYS, YEARS, ValueRange.of(1, 365, 366)), EPOCH_DAY("EpochDay", DAYS, FOREVER, ValueRange.of((long) (Year.MIN_VALUE * 365.25), (long) (Year.MAX_VALUE * 365.25))), ALIGNED_WEEK_OF_MONTH("AlignedWeekOfMonth", WEEKS, MONTHS, ValueRange.of(1, 4, 5)), ALIGNED_WEEK_OF_YEAR("AlignedWeekOfYear", WEEKS, YEARS, ValueRange.of(1, 53)), MONTH_OF_YEAR("MonthOfYear", MONTHS, YEARS, ValueRange.of(1, 12), "month"), YEAR("Year", YEARS, FOREVER, ValueRange.of(Year.MIN_VALUE, Year.MAX_VALUE), "year"),
private final String name;
private final TemporalUnit baseUnit;
private final TemporalUnit rangeUnit;
private final ValueRange range;
private final String displayNameKey; private ChronoField(String name, TemporalUnit baseUnit, TemporalUnit rangeUnit, ValueRange range) {
this.name = name;
this.baseUnit = baseUnit;
this.rangeUnit = rangeUnit;
this.range = range;
this.displayNameKey = null;
} }

  

LocalDate、LocalDateTime、LocalTime开发小结的更多相关文章

  1. LocalDate/LocalDateTime/LocalTime与Date的互转

    // 01. java.util.Date --> java.time.LocalDateTime public void UDateToLocalDateTime() { java.util. ...

  2. Java8新特性_日期时间新类 LocalDate、LocalTime、LocalDateTime

    import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeForma ...

  3. Java 8 中 Date与LocalDateTime、LocalDate、LocalTime互转

    Java 8中 java.util.Date 类新增了两个方法,分别是from(Instant instant)和toInstant()方法 // Obtains an instance of Dat ...

  4. java8新特性LocalDate、LocalTime、LocalDateTime的学习

    以前操作时间都是使用SimpleDateFormat类改变Date的时间格式,使用Calendar类操作时间.但是SimpleDateFormat是线程不安全的,源码如下: private Strin ...

  5. 【Java常用类】LocalDate、LocalTime、LocalDateTime

    LocalDate.LocalTime.LocalDateTime 说明 JDK 1.0中包含了 一个java.util.Date类,但是它的大多数方法已经在JDK 1.1引入Calendar类之后被 ...

  6. 时间工具类之“ JDK1.8中 LocalDate、LocalTime、LocalDateTime、LocalDateTimeUtil四个时间工具类”

    一.使用的原因 在JDK8发布的时候,推出了LocalDate.LocalTime.LocalDateTime这个三个时间处理类,以此来弥补之前的日期时间类的不足,简化日期时间的操作. 在Java8之 ...

  7. 常用类-LocalDate、LocalTime、LocalDateTime

    详情解释请看下方代码区 点击查看代码 @Test public void test1(){ //实例化:now()获取当前日期.时间.日期 + 时间 LocalDate localDate = Loc ...

  8. java8中的localdate和localtime用法举例

    java8中的localdate和localtime用法举例如下:这两个方法使我们可以方便的实现将旧的日期类转换为新的日期类,具体思路都是通过Instant当中介,然后通过Instant来创建Loca ...

  9. LocalDate和LocalTime的用法介绍

    原文:LocalDate和LocalTime的用法介绍 在JAVA中,常用的处理日期和时间的类主要有Date,Calendar,而在JDK1.8中,新增了两个处理日期和时间的类,一个是LocalDat ...

随机推荐

  1. JGUI源码:prefixfree 这个库有时候会引起网页一直加载中(10)

    如题,大部分情况下正常,但是chrome频繁刷新时,会出现这个问题,控制台没有异常信息.最终放弃使用引用第三方库prefixfree.min.js

  2. 将JSON转换成MAP的工具类

    package com.xxxx.util; import java.io.BufferedReader; import java.io.InputStream; import java.io.Inp ...

  3. luogu P5320 [BJOI2019]勘破神机

    传送门 首先我们要知道要求什么.显然每次放方块要放一大段不能从中间分开的部分.设\(m=2\)方案为\(f\),\(m=3\)方案为\(g\),\(m=2\)可以放一个竖的,或者两个横的,所以\(f_ ...

  4. sqlyog连接mysql8.0

    1.本人安装的是mysql8.0社区版,安装包名称:mysql-installer-community-8.0.12.0.msi,可自行到官网下载. 2.安装完成后用sqlyog连接数据库出现密码乱码 ...

  5. 更改checkbox的默认样式

    最近做一个vue项目要用到checkbox要修改默认样式,选中是纯白色,不选择只有白色边框,起初以为很容易,没想到还折腾了一翻,记录一下. 几经折腾,理清input 和label的关系 最终改进版本, ...

  6. mybatis:SQL拦截器

    打印执行的SQL语句 import java.sql.Connection; import java.text.DateFormat; import java.util.Date; import ja ...

  7. 如何用java实现一个p2p种子搜索(2)-路由表实现

    路由表实现 回顾一下上一篇讲的内容,上一篇提到从dht网络中获取infohash,那么加入dht网络后的最重要的第一步就是怎么去建立路由表. 路由表里面保存的是dht中其他node的信息,所以node ...

  8. HTTP协议详解(二)

    接着第一篇学习.... 5 头域(首部) 每个头域由一个域名,冒号(:)和域值三部分组成.域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表 ...

  9. 【python系列】--Python变量和数据类型

    python数据类型 一.整数 Python可以处理任意大小的整数,当然包括负整数,在Python程序中,整数的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等. 计算机由于使用 ...

  10. Oracle中的substr()函数 详解及应用

    注:本文来源于<Oracle中的substr()函数 详解及应用> 1)substr函数格式   (俗称:字符截取函数) 格式1: substr(string string, int a, ...