浅谈Java日期处理

java 中的日期

你首先想到的处理它们需要什么API?

java.util.Date
java.util.Calendar
DateUtils
DateFormatUtils

DateParseUtils

Date和Calendar的痛苦

可变性:声明了的日期还可以改变吗?
偏移性
年:1900开始?
月:0开始?MONTH_OF_YEAR
日:0开始?DAY_OF_MONTH
等等。。。
命名(自解释)
Date=日期?
Calendar=日历?
格式化:Calendar无法格式化

线程安全:非线程安全

Java8的java.time包

初识
    不可变
    线程安全

   java.time – 包含值对象的基础包
   java.time.chrono – 提供对不同的日历系统的访问
   java.time.format – 格式化和解析时间和日期
   java.time.temporal – 包括底层框架和扩展特性

    java.time.zone – 包含时区支持的类

日期:LocalDate

•    值类型(内容相同即equals,对比String

•    它是表示日期的不可变类型,不包含时间和时区。

•    它所有的方法都是常用方法

•    使用工厂方法创建

•    枚举类型MonthDayOfWeek用来增强代码的可读、可靠性

日期:LocalDate常用操作

•    不可变:每次都会生成新的实例

•    线程安全:多线程

日期:LocalDate高级操作

•    对日期进行复杂操作时,使用修改器(java.time.TemporalAdjuster

•    封装了常用高级操作

•    可使用LocalDate API封装自己的高级操作


时间:LocalTime

•   值类型

•   与日期、时间无关

•   以午夜为基准,24小时一个周期(22+6=4

•   支持修改器


日期时间:LocalDateTime

•    LocalDate+LocalTime的简单组合

•    创建:工厂类;LocalDate + LocalTime


日期时间:LocalDateTime常用API

•   of静态工厂方法,从组成部分中创建实例

•   from静态工厂方法,尝试从相似对象中提取实例。from()方法没有of()方法类型安全

•   now静态工厂方法,用当前时间创建实例

•   parse静态工厂方法,总字符串解析得到对象实例

•   get获取时间日期对象的部分状态

•   is检查关于时间日期对象的描述是否正确

•   with返回一个部分状态改变了的时间日期对象拷贝

•   plus返回一个时间增加了的、时间日期对象拷贝

•   minus返回一个时间减少了的、时间日期对象拷贝

•   to把当前时间日期对象转换成另外一个,可能会损失部分状态

•   at用当前时间日期对象组合另外一个,创建一个更大或更复杂的时间日期对象

•   format提供格式化时间日期对象的能力

时间点:Instant

•   Java中,时间点的表示为从1970开始的毫秒数

•   Instant

•    时间线上的一点,没有任何上下文信息(时区等)

•    精度为纳秒


时区Zone

•   TimeZoneZoneId

•   LocalDate/LocalTime/LocalDateTime/Instant不用考虑时区

•   使用ZonedDateTime进行时区相关操作

时间长度

•   两种时间长度

•    Duration表示以秒和纳秒为基准的时长。例如,“23.6秒”。

•    Period表示以年、月、日衡量的时长。例如,“32个月零6天”


解析和格式化

•   专门的格式化类,将格式化从日期中分离

•   包含类

•    java.time.format.DateTimeFormatter

•    java.time.format.DateTimeFormatterBuilder

•   创建格式化器常用DateTimeFormatter中的常量和静态方法

•    常用ISO格式常量,如ISO_LOCAL_DATE

•    字母模式,如ofPattern(“dd/MM/uuuu”)

•    本地化样式,如ofLocalizedDate(FormatStyle.MEDIUM)













  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值