一 前言

续上篇java8在日常开发中使用LocalDate和LocalTimehttps://blog.csdn.net/youku1327/article/details/102771936】中已经能够熟练的操作javaSE8的时间基本操作;本篇文章将能力再次提升一个水平,能够解决大多数开发场景下的时间互相转换的问题;如果有选择困难症就别看这篇文章了;随手点赞谢谢;

二 时间戳与LocalDateTime互转

2.1 LocalDateTime 转 时间戳

方式一

这边值得一提的是在中国的时区偏移是8小时,本次示例转的时间戳是秒级别,得到的值是一个long值;知识追寻者这边是当前时间,故读者得到的结果与知识追寻者得到的结果不一致;读者可以使用站长工具进行测试校验

https://unixtime.51240.com/

    @Test
public void localTimeTest1(){
// 获得当前时间
LocalDateTime localDateTime = LocalDateTime.now();
// 将当前时间转为时间戳
long second = localDateTime.toEpochSecond(ZoneOffset.ofHours(8));
// 1580706475
System.out.println(second); }

方式二

此方法执行的结果与之前一致,也是秒级别

    @Test
public void localTimeTest2(){
// 获得当前时间
LocalDateTime localDateTime = LocalDateTime.now();
// 将当前时间转为时间戳
long second = localDateTime.toInstant(ZoneOffset.ofHours(8)).getEpochSecond();
// 1580707001
System.out.println(second); }

方式三

此方式转的将是毫秒级别,直接用于站长工具是测试不出来,读者应该将其除1000取商获得正确的秒级时间戳;

    @Test
public void localTimeTest3(){
// 获得当前时间
LocalDateTime localDateTime = LocalDateTime.now();
// 将当前时间转为时间戳
long milliseconds = localDateTime.toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
// 1580707268
System.out.println(milliseconds/1000); }

2.2 时间戳 转LocalDateTime

以下几种获取的LocalDateTime方式按读者需求进行获取,不同的精确值,将获取不同的结果;

方式一

先获取时间戳为秒级别,然后通过转换为LocalDateTime

    @Test
public void localTimeTest4(){
//获得时间戳
long second = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).getEpochSecond();
// 将时间戳转为当前时间
LocalDateTime localDateTime = LocalDateTime.ofEpochSecond(second, 0, ZoneOffset.ofHours(8));
// 2020-02-03T13:30:44
System.out.println(localDateTime); }

方式二

本次获取的时间搓将是毫秒级别故要除以1000

    public void localTimeTest5(){
//获得时间戳
long milliseconds = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();
// 将时间戳转为当前时间
LocalDateTime localDateTime = LocalDateTime.ofEpochSecond(milliseconds/1000, 0, ZoneOffset.ofHours(8));
// 2020-02-03T13:35:53
System.out.println(localDateTime); }

方式三

本方式精确值是毫秒级别,故得到的结果会存在三位小数点;

    @Test
public void localTimeTest6(){
//获得时间戳
long milliseconds = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();
// 将时间戳转为当前时间
LocalDateTime localDateTime = Instant.ofEpochMilli(milliseconds).atZone(ZoneOffset.ofHours(8)).toLocalDateTime();
// 2020-02-03T13:38:35.799
System.out.println(localDateTime); }

三 时间戳与LocalDate互转

学会时间戳与LocalDate互转,同理就可以推出时间戳与LocalTime 互转,不过知识追寻者相信几乎没人会用到这个,故这边就不做示例;

3.1 时间戳转LocalDate

方式一

注意这边是毫秒级的时间戳;

  @Test
public void localDateTest1(){
//获得时间戳
long milliseconds = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();
// 将时间戳转为当前时间
LocalDate localDate = Instant.ofEpochMilli(milliseconds).atZone(ZoneOffset.ofHours(8)).toLocalDate();
// 2020-02-03
System.out.println(localDate); }

方式二

注意这边是秒级时间戳

    @Test
public void localDateTest2(){
//获得时间戳
long seconds = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).getEpochSecond();
// 将时间戳转为当前时间
LocalDate localDate = Instant.ofEpochSecond(seconds).atZone(ZoneOffset.ofHours(8)).toLocalDate();
// 2020-02-03
System.out.println(localDate); }

3.2 LocalDate 转 时间戳

方式一

注意妙计时间戳

    @Test
public void localDateTest3(){
LocalDate localDate = LocalDate.now();
//获得时间戳
long seconds = localDate.atStartOfDay(ZoneOffset.ofHours(8)).toInstant().getEpochSecond();
// 1580659200
System.out.println(seconds); }

方式二

注意毫秒级时间戳

    @Test
public void localDateTest4(){
LocalDate localDate = LocalDate.now();
//获得时间戳
long seconds = localDate.atStartOfDay(ZoneOffset.ofHours(8)).toInstant().toEpochMilli();
// 1580659200000
System.out.println(seconds); }

四 LocalDateTime与Date互转

4.1 Date转LocalDateTime

方式一

得出结果是有小数点,毫秒级精确

    @Test
public void DateTest1(){
// 创建时间
Date date = new Date();
// 将时间转为 LocalDateTime
LocalDateTime localDateTime = date.toInstant().atOffset(ZoneOffset.ofHours(8)).toLocalDateTime();
// 2020-02-03T14:07:49.833
System.out.println(localDateTime); }

方式二

秒级精确;

    @Test
public void DateTest2(){
// 创建时间
Date date = new Date();
// 将时间转为 秒级时间戳
long second = date.toInstant().atOffset(ZoneOffset.ofHours(8)).toEpochSecond();
LocalDateTime localDateTime = LocalDateTime.ofEpochSecond(second, 0, ZoneOffset.ofHours(8));
// 2020-02-03T14:11:39
System.out.println(localDateTime); }

4.2 LocalDateTime 转 Date

方式一

秒级

    @Test
public void DateTest3(){
//当前时间
LocalDateTime localDateTime = LocalDateTime.now();
// 获得 Instant
Instant instant = Instant.ofEpochSecond(localDateTime.toEpochSecond(ZoneOffset.ofHours(8)));
// 获得 Date
Date date = Date.from(instant);
// Mon Feb 03 14:16:27 CST 2020
System.out.println(date); }

方式二

    @Test
public void DateTest4(){
//当前时间
LocalDateTime localDateTime = LocalDateTime.now();
// 获得 Instant
Instant instant = localDateTime.atZone(ZoneOffset.ofHours(8)).toInstant();
// 获得 Date
Date date = Date.from(instant);
// Mon Feb 03 14:20:32 CST 2020
System.out.println(date); }

五 LocalDate与Date互转

5.1 LocalDate 转 Date

    @Test
public void DateTest5(){
//当前时间
LocalDate localDate = LocalDate.now();
// 获得 Instant
Instant instant = localDate.atStartOfDay(ZoneOffset.ofHours(8)).toInstant();
// 获得 Date
Date date = Date.from(instant);
// Mon Feb 03 00:00:00 CST 2020
System.out.println(date); }

5.2 Date 转LocalDate

    @Test
public void DateTest6(){
// 获得 date
Date date = new Date();
// 获得 LocalDate
LocalDate localDate = date.toInstant().atOffset(ZoneOffset.ofHours(8)).toLocalDate();
// 2020-02-03
System.out.println(localDate);
}

六 LocalDateTime格式化

最后再说下格式化;知识追寻者这边就不提 LocalDateTime, LocalDate , LocalTime 互转问题,原因是前言那篇文章已经提到过;

6.1 LocalDateTime 转字符串

   @Test
public void format1(){
// 获得 localDateTime
LocalDateTime localDateTime = LocalDateTime.now();
// 指定模式
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH/mm/ss");
// 将 LocalDateTime 格式化为字符串
String format = localDateTime.format(dateTimeFormatter);
// 2020/02/03 14/38/54
System.out.println(format);
}

6.2 字符串 转LocalDateTime

    @Test
public void format2(){
String time = "2020/02/03 14/38/54";
// 指定模式
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH/mm/ss");
// 将字符串格式化为 LocalDateTime
LocalDateTime localDateTime = LocalDateTime.parse(time, dateTimeFormatter);
// 2020-02-03T14:38:54
System.out.println(localDateTime);
}

时间戳和LocalDateTime和Date互转和格式化的更多相关文章

  1. Java8 LocalDateTime获取时间戳(毫秒/秒)、LocalDateTime与String互转、Date与LocalDateTime互转

    本文目前提供:LocalDateTime获取时间戳(毫秒/秒).LocalDateTime与String互转.Date与LocalDateTime互转 文中都使用的时区都是东8区,也就是北京时间.这是 ...

  2. LocalDateTime与字符串互转/Date互转/LocalDate互转/指定日期/时间比较

    Java 8中表示日期和时间的类有多个,主要的有: Instant:表示时刻,不直接对应年月日信息,需要通过时区转换 LocalDateTime: 表示与时区无关的日期和时间信息,不直接对应时刻,需要 ...

  3. Java中String、LocalDateTime、LocalDate、Date互转

    String 转LocalDate和LocalDateTime LocalDate startDate = LocalDate.parse("2019-12-05", DateTi ...

  4. mysql时间操作(时间差和时间戳和时间字符串的互转)

    mysql时间操作(时间差和时间戳和时间字符串的互转) 两个时间差: MySQL datediff(date1,date2):两个日期相减 date1 - date2,返回天数. select dat ...

  5. LocalDateTime代替Date

    为什么需要LocalDate.LocalTime.LocalDateTime Date如果不格式化,打印出的日期可读性差 Tue Sep 10 09:34:04 CST 2019 使用SimpleDa ...

  6. java8的LocalDateTime与Date互相转换

    LocalDateTime转Date Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant(); Date ...

  7. Java8 LocalDateTime和Date相互转换

    很想要用Java的时间api,但有时候还是需要转换为Date. 二者的相互转换并不是一步到位那么简单,所以,还是需要记录一下转换的api Date to LocalDateTime Date toda ...

  8. Java日期时间API系列13-----Jdk8中java.time包中的新的日期时间API类,时间类转换,Date转LocalDateTime,LocalDateTime转Date等

    从前面的系列博客中可以看出Jdk8中java.time包中的新的日期时间API类设计的很好,但Date由于使用仍非常广泛,这就涉及到Date转LocalDateTime,LocalDateTime转D ...

  9. LocalDateTime与Date相互转换

    LocalDateTime 转 Date LocalDateTime localDateTime=LocalDateTime.now() Date date = Date.from(localDate ...

随机推荐

  1. macOS 微信多开插件

    macOS版本微信默认只能开一个,安装 WeChatTweak-macOS 插件即可实现多开. 效果图 安装步骤打开终端输入一下命令: git clone https://github.com/Sun ...

  2. EcShop二次开发学习方法

    EcShop二次开发学习方法 (2012-03-08 11:10:08) 转载▼ 标签: 京东 公用函数库 二次开发 sql语言 数据库设计 杂谈 分类: ecshop 近年来,随着互联网的发展,电子 ...

  3. 学习JNA,Jnative

    首先说下JAVA调用DLL,Java调用DLL的常用方法大致为几种,JNI,JNA,Jnative等,但实现与易用性差距还是很大,1.JNI用的人比较多,但相对来说比较麻烦要熟悉c并且要使用javac ...

  4. vue v-model 数据双向绑定(笔记)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 吴裕雄--天生自然HADOOP操作实验学习笔记:pig简介

    实验目的 了解pig的该概念和原理 了解pig的思想和用途 了解pig与hadoop的关系 实验原理 1.Pig 相比Java的MapReduce API,Pig为大型数据集的处理提供了更高层次的抽象 ...

  6. vue 项目上传到码云,push时error: failed to push some refs to 'https://gitee.com/mawenrou/vue_ht.git'

    vue 项目上传到码云,push时error: failed to push some refs to 'https://gitee.com/mawenrou/vue_ht.git' 因为之前已经创建 ...

  7. oracle jobs查看 sql及创建 jobs

    1.查看所有的 jobs select t.* from user_jobs t 2.创建 jobs declare job_id   pls_integer; begin sys.dbms_job. ...

  8. 【随缘更(gu)】牛客D4简要思路(没有题解)

    T1 当然不能枚举每个区间,于是我们考虑算贡献. 对于每个位置i,我们计算其作为区间内第一个出现ai的位置的区间总数,则有ans=sigma( i - last[i] ) * ( n - i + 1 ...

  9. 小程序父子组件onLoad和Created之间的问题

    今天开发日历插件时,遇到了以下问题: 因为需要在父组件的onLoad里加载接口从而得到每一天的房间数据,然后将数据存进小程序缓存. 接着在子组件里 获取小程序缓存来得到父组件传来的房间数据,在子组件里 ...

  10. spring源码第一章_获取源码并将源码转为eclipse工程

    1.通过http://gitforwindows.org/下载github 2.通过http://services.gradle.org/distributions/下载gradle:gardle类似 ...