用久了C#中的DateTime类型之后,再用回Java中的时间类,真是一种痛苦的事情。

Java 8之前,Date类就以其糟糕的设计,被人吐槽,比如最简单的初始化日期的方法,会出现反直觉的结果,比如

Date date = new Date(1980, 12, 25);

它的真实日期是Wed Jan 12 00:00:00 CST 3881这种不可思议结果。当然,它也是有一种算法的,是1900+1980+1导致的,至于为啥是这个计算式,有兴趣的人可以去翻API手册,总之对于使用者来说,这个东西烂级了。

后来的Calendar依旧烂,甚至烂出了新境界,不屑一提。
后来听说有个Joda-Time,用过感觉甚好,后来Java8中借鉴了这个东西,终于实现了一个好用点的时间类。当然比C#还是差了很多,但至少不那么反人类。

下面例举一些C#中的时间类的常用方法,在Java8中的实现方式。

C#中有DateTime结构体,Java8中有
java.time.LocalDate 只表示日期,不包含时区信息
java.time.LocalTime 只表示时间,不包含时区信息
java.time.LocalDateTime 同时包含了时间和日期,和C#中DateTime最像的就是这个东西。

因此,建议就用LocalDateTime来进行时间类的操作。

Now的表示LocalDateTime t1=LocalDateTime.now();自定义时间LocalDateTime t2=LocalDateTime.of(2000,1,1,19,0,0);LocalDateTime t3=LocalDateTime.parse("2007-12-03T10:15:30");LocalDateTime t4=LocalDateTime.parse("2001-04-23 12:30",DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));LocalDateTime t5=LocalDateTime.parse("2017-01-08 00:00:00",DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));时间的加减LocalDateTime t6=t2.plusDays(5).plusHours(3);LocalDateTime t7=t2.plusDays(-5).plusHours(-3);算时间差Duration  d1= Duration.between(t6, t7);Duration  d2= Duration.between(t7, t6);时间判等,千万不要用==LocalDateTime t8=LocalDateTime.of(2000,1,1,19,0,0);System.out.println(t2.isEqual(t8));时间判大小   System.out.println(t1.isAfter(t2));转换成字符串System.out.println(t1);System.out.println(t1.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));

嗯,差不多就是这些了,知道了这些用法,常规的应用下足够使用了。不够的话,再查API即可。

本文转自cnn23711151CTO博客,原文链接:http://blog.51cto.com/cnn237111/2050021 ,如需转载请自行联系原作者

Java 8中用java.time.LocalDate全面代替老旧的Date,Calendar类相关推荐

  1. Java Date Calendar类的使用 如何计算两个日期之间有多少天

    Java工具类:java.util.Date,是Java中经常被用到一个日期时间的类.可以用来表示具体的年月日时分秒.java.util.Calendar,是日历类 导包:import java.ut ...

  2. JAVA笔记:Java常用类库

    这篇文章我们来总结下Java中的常用类库.类库中的这些类和方法都是精心设计的,其运行的效率高.质量高,这些类和方法几乎包含在所有的Java软件中,所以可移植性很高. 下面我们详细学习下. String ...

  3. Java中Date类和Calendar类的使用

    java.util 包中由许多常用的类组成,其中主要是用于处理一组对象的集合类.例如ArrayList和HashMap类:它还包含用于处理日期和时间的类,例如Date类和Calendar类:下面将介绍 ...

  4. java程序中用户名和密码_在Java应用程序中使用密码术

    java程序中用户名和密码 这篇文章描述了如何使用Java密码体系结构 (JCA),该体系结构使您可以在应用程序中使用密码服务. Java密码体系结构服务 JCA提供了许多加密服务,例如消息摘要和签名 ...

  5. Java中apple导入那个包_在Java中,由Java编泽器自动导入而无需在程序中用import导入的包是()。A.java.appletB.java.awtC.j...

    在Java中,由Java编泽器自动导入而无需在程序中用import导入的包是().A.java.appletB.java.awtC.j 更多相关问题 问卷星是一个专业.无限制的免费在线问卷调查.测评. ...

  6. IDEA为java项目中用到python的模块设置Python interpreter

    IDEA为java项目中用到python的模块设置Python interpreter Java项目中模块用到了python,没有为模块设置Python解释器,因此点击右上角Configure Pyt ...

  7. Java 8 Time Api 使用(LocalDate,LocalTime和LocalDateTime等)

    目录 1.概述 2. 旧的时间API(java8之前)的问题 3. 使用LocalDate,LocalTime和LocalDateTime 3.1.使用LocalDate 3.2.使用LocalTim ...

  8. java项目 配置文件_细数Java项目中用过的配置文件(properties篇)

    灵魂拷问:在不重启服务的前提下,如何让配置修改生效的呢?有什么奇技淫巧吗? 灵魂拷问:在 Java 项目中,总能看到以 .properties 为后缀的文件踪影,这类配置文件是怎么加载的呢? 项目研发 ...

  9. java 日期calendar_Java中用Calendar类计算周和周的起始日期(转)

    package com.tongyue.hot.web; import java.util.Calendar; import java.util.Date; import java.util.Greg ...

最新文章

  1. 一键ghost奥运版_超详细的纯净版windows系统重装示例
  2. linux 配置计算机和用户免密在本地计算机执行远程命令 hosts.equiv $HOME/.rhosts 简介
  3. Nginx的应用之虚拟主机
  4. android 开启线程关闭对话框,java – 从后台线程的PopUp对话框Android
  5. (50)FPGA面试题消除一个glitch实现
  6. io.jsonwebtoken.ExpiredJwtException jwt令牌过期
  7. 「轻阅读」如何设计全链路99.99%高可用架构?
  8. 编辑mike的dfs2、dfs0等文件
  9. 并联串联混合的电压和电流_并联电阻的计算公式(附各种并联电阻网络图解)...
  10. win7自带的截图工具不能使用的解决办法
  11. php内置函数分析之ucfirst()、lcfirst()
  12. Asp中显示%百分比函数FormatPercent的使用
  13. 电脑仙人掌机器人作文_用蜗牛.仙人掌.电脑.雪人.机器人.蚕宝宝.大象任意选两个编写一则300童话...
  14. 焊接好的CH340G芯片不工作
  15. 基于单片机的温湿度监测报警
  16. 百度AI接入api使用流程
  17. 语音识别入门第七节:语言模型
  18. 【Arduino实验09 外部中断触发报警】
  19. 「DaoCloud道客」全新 IT 交付:服务化 + 标准化 = 一致的自助式服务体验
  20. SAP migo增强

热门文章

  1. 进阶06 List集合
  2. python提供了两种基本的数值类型_Python 基本数据类型
  3. macos catalina cdr下载_这个开源神器可快速帮你安装 MacOS 虚拟机
  4. 中文和全角检测 两种写法
  5. java map集合使用_JAVA中Map集合的使用举例
  6. 达内python第二阶段月考_Python编程练习题二
  7. 5g pdu session_设备 | NEC被选为NTT DOCOMO独立5G移动核心的供应商
  8. java正则匹配买火车票_matlab的正则表达式
  9. kali没有arpspoof命令_windows环境下使用python3命令
  10. 将java编译成so库_利用android studio 生成 JNI需要的动态库so文件