一 前言

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

二 时间戳与LocalDateTime互转

2.1 LocalDateTime 转 时间戳

方式一

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

https://unixtime.51240.com/

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

方式二

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

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

方式三

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

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

2.2 时间戳 转LocalDateTime

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

方式一

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

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

方式二

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

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

方式三

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

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

三 时间戳与LocalDate互转

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

3.1 时间戳转LocalDate

方式一

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

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

方式二

注意这边是秒级时间戳

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

3.2 LocalDate 转 时间戳

方式一

注意妙计时间戳

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

方式二

注意毫秒级时间戳

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

四 LocalDateTime与Date互转

4.1 Date转LocalDateTime

方式一

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

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

方式二

秒级精确;

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

4.2 LocalDateTime 转 Date

方式一

秒级

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

方式二

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

五 LocalDate与Date互转

5.1 LocalDate 转 Date

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

5.2 Date 转LocalDate

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

六 LocalDateTime格式化

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

6.1 LocalDateTime 转字符串

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

6.2 字符串 转LocalDateTime

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

时间戳和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. 5.使用Redis+Flask维护动态Cookies池

    1.为什么要用Cookies池? 网站需要登录才可爬取,例如新浪微博 爬取过程中如果频率过高会导致封号 需要维护多个账号的Cookies池实现大规模爬取 2.Cookies池的要求 自动登录更新 定时 ...

  2. python字符串和数值操作函数大全(非常全)

    字符串和数值型数字的操作大全 1.反斜杠\的使用规则:一般使用表示续行的操作,可以其他符号相结合组成其他的一些使用符号,转义字符\‘的使用会识别引号,使得字符串中的引号和外面本来的啊引号相区分. (1 ...

  3. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:用于要弹出信息的按钮

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. C#中struct和class的区别详解 (转载)

    本文详细分析了C#中struct和class的区别,对于C#初学者来说是有必要加以了解并掌握的. 简单来说,struct是值类型,创建一个struct类型的实例被分配在栈上.class是引用类型,创建 ...

  5. Spark教程——(1)安装Spark

    Cloudera Manager介绍     Cloudera Manager(简称CM)是Cloudera公司开发的一款大数据集群安装部署利器,这款利器具有集群自动化安装.中心化管理.集群监控.报警 ...

  6. 移动端触摸touchstart监听事件

    click.mousedown等事件适用于PC端,在移动端会有一定时间的延迟,所以更好的优化移动端体验,要用touch事件, 1.首先要添加一个监听事件,监听移动端行为 element.addEven ...

  7. pytorch 调整tensor的维度位置

    target.permute([0, 3, 1, 2]) 一定要使用permute以及中括号 一些在我这里没起到作用的网上的例子: 1. https://blog.csdn.net/zouxiaolv ...

  8. Hadoop的伪分布式安装和部署的流程

    1.准备工作 下载一些用到的命令 yum install -y vim yum install -y lrzsz yum install net-tools 目录约定 /opt #工作目录 /opt/ ...

  9. Ajax--数据格式

    1.从服务端接收数据的时候,那些数据必须以浏览器能够理解的格式来发送,服务器端的编程语言智能以如下三种格式返回数据:1)XML; 2)JSON; 3)HTML; 2.解析HTML: --HTML由一些 ...

  10. Java图形与文本(18)

    实例018  旋转图形 实例说明 本实例演示在Java中绘制图形时,如何对图形进行旋转.运行程序,单击窗体上的“顺时针”按钮,可以将图形顺时针旋转,效果如图1.18所示,用户还可以通过单击“逆时针”和 ...