• 前言
  • Instant
  • LocalDate
  • Clock
  • SystemnanoTime

前言

(未完待续)
推荐一篇系统学习的java8时间类文章
我这里会介绍java8 新API中常用个类怎么用 应该是所有博文中最详细的使用API
1. Instant 时间戳
2. LocalDate 日期类 不包含 时分秒 只有年月日
3. LocalTime 时间类 只包含 时分秒
4. LocalDateTime 包含以上
5. Clock 时钟
6. 纳秒 System.nanoTime

Instant

  1. 使用:
    注意:下列方法获取的时间戳和北京相差8个时区

    Instant instant = Instant.now();
    System.out.println(instant);
    //输出2016-12-04T12:37:51.995Z 和北京时间相差8个时区
    

    解决方法:

    Instant now2 = Instant.now().plusMillis(TimeUnit.HOURS.toMillis(8));

    plusMillis():增加时间戳时间 以毫秒为单位,也有增加纳秒和秒的方法
    minusNanos():增加时间戳时间 以纳秒为单位
    minusSeconds():增加时间戳时间 以秒为单位
    TimeUnit.HOURS.toMillis():将小时转化为毫秒

  2. 获取从1970 1月1日到现在的 毫秒

    Instant instant = Instant.now();
    //获取从1970 1月1日到现在的 毫秒
    System.out.println(instant.toEpochMilli());
  3. 比较时间戳谁在前谁在后

    Instant instant = Instant.now();//获得当前时间戳并且增加33毫秒
    Instant instant2 = Instant.now().plusMillis(33);//获得当前时间戳并且减少33毫秒
    Instant instant3 = Instant.now().minusMillis(33);//获取当前时间  这里应该和instant的时间戳一样
    Instant instant4 = Instant.now();//判断 instant 是否在目标时间之后这里应该是true
    System.out.println(instant.isAfter(instant3));//判断 instant 是否在目标时间之前这里应该是true
    System.out.println(instant.isBefore(instant2));//判断两个时间戳是否相等 返回true
    System.out.println(instant.equals(instant4));
  4. 获得两个时间戳相差天数或小时等

    Instant instant = Instant.now();//获得当前时间戳并且增加24小时
    //TimeUnit.HOURS.toMillis(24)将小时转毫秒
    Instant instant3 = Instant.now().plusMillis(TimeUnit.HOURS.toMillis(24));//获取相差天数 这里为返回1
    long until = instant.until(instant3, ChronoUnit.DAYS);//获取相差 这里返回小时 返回24
    long until2 = instant.until(instant3, ChronoUnit.HOURS);//获取相差 这里返回 毫秒86400000  ChronoUnit还有其他的我就不举例了
    long until3 = instant.until(instant3, ChronoUnit.MILLIS);
  5. 时间戳时差偏移和对应年月份

    Instant instant = Instant.now();//偏移时区相差30小时
    OffsetDateTime atOffset = instant.atOffset(ZoneOffset.ofHours(1));//返回偏移的时间戳 !!!!!!!!!
    //!!!!!注意这里的时间戳是原来的instant
    //!!!!  atOffset.toInstant()==instant
    atOffset.toInstant();//获取年份
    atOffset.getYear();
    //获取月份
    atOffset.getMonth();
    //获取月份的第几天
    atOffset.getDayOfMonth();
    //获取星期中的第几天
    atOffset.getDayOfWeek();
    //atOffset.getDayOfWeek().getValue() 对应周数的第几天
    //atOffset.getDayOfWeek()返回 英文星期几 比如 SUNDAY//获取在某个时差
    //UTC不做偏差ZoneId.of("Asia/Kolkata")
    ZonedDateTime atZone = instant.atZone(ZoneOffset.UTC);
    //亚洲印度
    ZonedDateTime atZone = instant.atZone(ZoneId.of("Asia/Kolkata"));
    //偏差一小时
    ZonedDateTime atZone2 = instant.atZone(ZoneOffset.ofHours(1));
    //获取时间和上面相同
  6. 创建自定义时间

    Instant instant =Instant.parse("2007-12-03T10:15:30.00Z");
  7. 获得从1970-1-1到现在偏移的时间戳

    //偏移1970-1-1 3000毫秒
    Instant.ofEpochMilli(3000);
    //偏移300秒
    Instant.ofEpochSecond(300);
  8. 获取时间戳中 今年的第一天 或者最后一天,本月第一天….等

    Instant now = Instant.now();ZonedDateTime atZone = now.atZone(ZoneOffset.UTC);//获取时间戳 中这个月的第一天的时间 如现在时间是2016 10 23-->>2016 10 1
    ZonedDateTime with = atZone.with(TemporalAdjusters.firstDayOfMonth());
    //获取时间戳 下个月的第一天的时间 如现在时间是2016 10 23  -->>2016 11 1
    ZonedDateTime with2 = atZone.with(TemporalAdjusters.firstDayOfNextMonth());
    //获取时间戳 下年的第一天 如现在时间是2016 10 23  -->>2017 1 1
    ZonedDateTime with3 = atZone.with(TemporalAdjusters.firstDayOfNextYear());
    //获取时间戳 今年第一天 如现在时间是2016 10 23  -->>2016 1 1
    ZonedDateTime with4 = atZone.with(TemporalAdjusters.firstDayOfYear());
    //获取这个这个月的第一个星期二
    ZonedDateTime with5 = atZone.with(TemporalAdjusters.firstInMonth(DayOfWeek.TUESDAY));
    //获取时间戳 本月最后一天  2016 12 23  -->>2016 12 31
    ZonedDateTime with6 = atZone.with(TemporalAdjusters.lastDayOfMonth());
    //......后面大家自行查看TemporalAdjusters
  9. 获取时间戳 转化为LocalDate 等

    Instant now = Instant.now();ZonedDateTime atZone = now.atZone(ZoneOffset.UTC);
    //转化LocalDate
    atZone.toLocalDate();
    LocalDate date = LocalDate.from(atZone);//LocalDateTime
    atZone.toLocalDateTime();
    LocalDateTime.from(atZone);//LocalDateTime
    atZone.toLocalDateTime();
    LocalDateTime.from(date);

LocalDate

其实LocalDate,LocalDateTime,LocalTime 很多方法和时间戳基本都一样 大家不妨自己试试
时间戳中有的方法这个类基本都有…

  1. 创建(时间戳的添加/减少多个小时/天数也有这里就不写了)

        //获取当前时间 已经是本地时间LocalDate date = LocalDate.now();//获取指定时间LocalDate date2 = LocalDate.parse("2007-12-03");//获取指定时间LocalDate date3 = LocalDate.of(2007, 12, 3);//获取 距离1970-1-1 后面的第三十天 1970-01-31LocalDate date4 =LocalDate.ofEpochDay(30);//获取 1112年的第12天的日期  1112-1-12LocalDate date5 = LocalDate.ofYearDay(1112, 12);
  2. 判断闰年

    //获取当前时间 已经是本地时间
    LocalDate date = LocalDate.now();//判断闰年
    date.isLeapYear();
  3. 两个时间的比较相差天数等

    这里和时间戳的方法都一样 不过多了一个 我这里说明下

    //获取当前时间 已经是本地时间
    LocalDate date = LocalDate.now();
    //多加111天
    LocalDate plusDays = LocalDate.now().plusDays(111);
    //特有方法
    Period until = date.until(plusDays);//比较两个时间 的月数中天数的差值!!!!坑注意了
    //如2016.3,2 和2016.5.25 那么返回 3-25=-22
    until.getDays();
    //月份相减
    until.getMonths();
    //相差年数 就是直接拿年减去
    until.getYears();
  4. 指定小时分秒

    虽然这个类不能获取到 时分秒 但是可以指定一个然后返回LocalDateTime对象(有年月日和时分秒)

    //获取当前时间 已经是本地时间
    LocalDate date = LocalDate.now();LocalDateTime atTime = date.atTime(LocalTime.now());

Clock

  //时钟提供给我们用于访问某个特定 时区的 瞬时时间、日期 和 时间的。Clock c1 = Clock.systemUTC(); //系统默认UTC时钟(当前瞬时时间 System.currentTimeMillis())System.out.println(c1.millis()); //每次调用将返回当前瞬时时间(UTC)Clock c2 = Clock.systemDefaultZone(); //系统默认时区时钟(当前瞬时时间)Clock c31 = Clock.system(ZoneId.of("Europe/Paris")); //巴黎时区System.out.println(c31.millis()); //每次调用将返回当前瞬时时间(UTC)Clock c32 = Clock.system(ZoneId.of("Asia/Shanghai"));//上海时区System.out.println(c32.millis());//每次调用将返回当前瞬时时间(UTC)Clock c4 = Clock.fixed(Instant.now(), ZoneId.of("Asia/Shanghai"));//固定上海时区时钟System.out.println(c4.millis());System.out.println(c4.millis()); //不变 即时钟时钟在那一个点不动Clock c5 = Clock.offset(c1, Duration.ofSeconds(2)); //相对于系统默认时钟两秒的时钟System.out.println(c1.millis());System.out.println(c5.millis());

System.nanoTime

获取当前的纳秒.System.currentTimeMillis获取的是毫秒

long start = System.nanoTime();long end = System.nanoTime();//TimeUnit.NANOSECONDS.toMillis纳秒变化为秒
System.out.println("执行时间为"+TimeUnit.NANOSECONDS.toMillis(end-start)+"s");

java8 时间类API相关推荐

  1. java8时间类的好处_Java8——时间类

    一套新的时间API,放在java.time包下面 比之前的更加规范,并且解决了线程安全问题(最大区别) 线程安全问题 public classSimpleDateFormatTest {public ...

  2. spring boot添加 LocalDateTime 等 java8 时间类序列化和反序列化的支持

    由于项目将原有的  Date类型的字段改造为 LocalDate,LocalDateTime,LocalTime 类型, 发现  spring  对项目的时间格式无法自动转换,故需手动配置下. 在sp ...

  3. Java8时间类Instant及ZoneId,ZoneOffset用法

    Instant.now().getEpochSecond() 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数. 时间 ...

  4. 如Java8的LocalDate与Date相互转换、ZonedDateTime等常用操作包含多个使用示例、Java8时区ZoneId的使用方法、Java8时间字符串解析成类

    下面将依次介绍 Date转Java8时间类操作 ,Java8时间类LocalDate常用操作(如获得当前日期,两个日期相差多少天,下个星期的日期,下个月第一天等) 解析不同时间字符串成对应的Java8 ...

  5. Java 时间类汇总

    Java 7 六个时间类 时间类的介绍与对比 类名称 时间格式 java.util.Date(父类) 年月日时分秒 java.sql.Date(子类) 年月日 java.sql.Time(子类) 时分 ...

  6. java joda datetime_Joda Time项目和java8时间api

    Joda Time出现的背景 在java1.0中,对日期和时间的支持只能依赖java.util.Date类.正如类名所表达的,这个类无法表示日期,只能以毫秒的精度表示时间.更糟糕的是它的易用性,由于某 ...

  7. java8 joda_Joda Time项目和java8时间api

    Joda Time出现的背景 在java1.0中,对日期和时间的支持只能依赖java.util.Date类.正如类名所表达的,这个类无法表示日期,只能以毫秒的精度表示时间.更糟糕的是它的易用性,由于某 ...

  8. Java8时间日期库DateTime API及示例

    背景 Java对日期,日历及时间的处理一直以来都饱受诟病,比如java.util.Date和java.util.Calendar类易用性差,不支持时区,非线程安全;还有用于格式化日期的类DateFor ...

  9. Java8新特性 - LocalTime 时间类的基本使用

    1.说明 LocalTime 是 Java8 中新增的 时间类,主要包含了 小时.分钟.秒.纳秒 四个属性. LocalTime类中提供了丰富的API,帮助我们更加简便的操作时间对象. 2.常用API ...

最新文章

  1. mysql带AND关键字的多条件查询
  2. 数据结构实验三:Huffman树及Huffman编码的算法实现
  3. BZOJ 1005: [HNOI2008]明明的烦恼
  4. 并发编程(一): POSIX 使用互斥量和条件变量实现生产者/消费者问题
  5. Python版插入排序算法
  6. 【华为推荐论文】如何学习未知样本?基于反事实学习的推荐系统技术研究(附论文下载链接)...
  7. 在ubuntu安装使用miniconda
  8. 去掉windows換行符^M
  9. 如何安装python3.8.2_Python 3.8.2详细图文安装教程(附安装包)
  10. [Microsoft][ODBC Microsoft Access Driver] 参数不足,期待是 1
  11. Java多线程面试攻略(一)
  12. 高一信息技术课件python编程_练习1--高一信息技术--数据与计算(Python版)
  13. centos 使用 scl 软件集
  14. 动态与静态Shape
  15. 易捷行云EasyStack携新一代私有云亮相中国电子信息博览会
  16. r语言图形怎么保存到c盘,图像 – 将R中的图保存为GIF
  17. 判断二极管导通例题_几种二极管的检测方法(普通,稳压,双向触发)
  18. 项目开发流程(简述)
  19. 网络编程使用标准I/O的危险以及正确使用RIO包
  20. T滤波器(低通滤波器)

热门文章

  1. mysql下出现Unknown column ‘id‘ in ‘on clause‘的解决方法
  2. python生成的excel无法打开-Python 解决中文写入Excel时抛异常的问题
  3. Python基础——np.where
  4. 通用的综合大数据数据可视化展示html页面源码
  5. Java 学习笔记(二十一)
  6. #2021暑假杭电多校8_1003.Ink on paper
  7. Python爬虫神器pyppeteer,对 js 加密降维打击
  8. 愿有岁月可回首,更敬年少一杯酒
  9. 11种QQ技术 ,让你成为QQ高手
  10. android沙漏动画app,沙漏动画