首页 > 编程语言 > 详细

Java日期API

时间:2021-04-22 08:59:10      阅读:29      评论:0      收藏:0      [点我收藏+]

常用类

日期类

JDK8之前日期时间API

java.util.Date

表示特定的瞬间,精确到毫秒

构造器:

  • Date():使用无参构造器创建的对象可以获取本地当前时间。
  • Date(long date)

常用方法

  • getTime(): 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
  • toString(): 把此 Date 对象转换为以下形式的 String:dow mon dd hh:mm:ss zzz yyyy,其中dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat),zzz是时间标准。
  • 其它很多方法都过时了。
Date date = new Date();
System.out.println(date);   //Mon Apr 19 21:42:57 CST 2021
System.out.println(System.currentTimeMillis()); //1618839778051
System.out.println(date.getTime()); //1618839777959

Date date1 = new Date(date.getTime());
System.out.println(date1.getTime());    //1618839777959
System.out.println(date1.toString());   //Mon Apr 19 21:42:57 CST 2021

java.text.SimpleDateFormat

Date类的API不易于国际化,大部分被废弃了,java.text.SimpleDateFormat类是一个不与语言环境有关的方式来格式化和解析日期的具体类

  • 格式化:日期 ==》字符串

    • SimpleDateFormat() :默认的模式和语言环境创建对象

    • public SimpleDateFormat(String pattern):该构造方法可以用参数pattern指定的格式创建一个对象,该对象调用:

    • public String format(Date date):方法格式化时间对象date

  • 解析:字符串 ==》日期

    • public Date parse(String source):从给定字符串的开始解析文本,生成一个日期。
Date date = new Date(); // 产生一个Date实例
SimpleDateFormat formater = new SimpleDateFormat(); // 产生一个formater格式化的实例
//打印输出默认的格式,String类型
System.out.println(formater.format(date));  // 21-4-19 下午10:13
//自定义日期格式
SimpleDateFormat formater2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   
//打印自定义日期格式,String类型
System.out.println(formater2.format(date)); // 2021-04-19 22:13:12
  
//解析字符串成日期类型
Date date1 = formater2.parse(formater2.format(date));   
System.out.println(date1);  //Mon Apr 19 22:19:32 CST 2021

java.util.Date VS java.sql.Date

日期最终要入库,需要java.util.Date类转变成java.sql.Date类型

//情况一:
  Date date1 = new java.sql.Date(2343243242323L);
  java.sql.Date date2 = (java.sql.Date) date1;
//情况二:
  Date date3 = new Date();
  java.sql.Date date4 = new java.sql.Date(date3.getTime());

JDK8之后日期时间API

日期时间API的迭代

第一代:jdk 1.0 Date类
第二代:jdk 1.1 Calendar类,一定程度上替换Date类
第三代:jdk 1.8 提出了新的一套API

前两代存在的问题举例

  • 可变性:像日期和时间这样的类应该是不可变的。
  • 偏移性:Date中的年份是从1900开始的,而月份都从0开始。
  • 格式化:格式化只对Date用,Calendar则不行。
  • 此外,它们也不是线程安全的;不能处理闰秒等。

新时间日期API

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

常用类

本地日期:LocalDate

本地时间:LocalTime

本地日期时间: LocalDateTime

常用方法

技术分享图片
//now():获取当前日期、时间、日期+时间
LocalDate localDate = LocalDate.now();
LocalTime localTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDate);  //2021-04-21
System.out.println(localTime);  //22:45:08.678
System.out.println(localDateTime);  //2021-04-21T22:45:08.678

//of():设置时间,没有偏移量
LocalDate ofDate = LocalDate.of(2021, 4, 21);
LocalDateTime ofDateTime = LocalDateTime.of(2021, 4, 21, 22, 49);
System.out.println(ofDate); //2021-04-21
System.out.println(ofDateTime); //2021-04-21T22:49

//getXxx():获取日期时间
DayOfWeek dayOfWeek = localDateTime.getDayOfWeek();
System.out.println(dayOfWeek);  //WEDNESDAY

//withXxx():修改日期时间返回新对象
LocalDate withlocalDate = localDate.withDayOfMonth(22);
System.out.println(withlocalDate);  //2021-04-22

Java日期API

原文:https://www.cnblogs.com/silloutte/p/14687451.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!