前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java时间相关类详解(Date类,Calendar类,LocalDate类,时间格式化,时间戳)

java时间相关类详解(Date类,Calendar类,LocalDate类,时间格式化,时间戳)

作者头像
smallmayi
发布2022-05-12 11:23:41
1.3K0
发布2022-05-12 11:23:41
举报
文章被收录于专栏:small专栏small专栏

常用时间类有Date,Calendar,LocalDate,SimpleDateFormat,时间戳等等。

Date类及其方法
在这里插入图片描述
在这里插入图片描述

使用new Date() 创建时,如图,忽略sun.util包,创建Date 主要是util包和sql包两种方式; 使用的是idea编辑器,可通过快捷键ctrl+h 查看类关系,如下图,sql.Date类继承于util包。

在这里插入图片描述
在这里插入图片描述
1)使用java.util 创建
在这里插入图片描述
在这里插入图片描述

Date主要使用无参构造和long类型创建,其余已过时。

代码语言:javascript
复制
Date date = new Date();
//接收一个 long 类型的参数,该参数是从 1970-01-01 00:00:00.000 到当前时间的毫秒数
Date date2 = new Date(1574673617000L);
System.out.println(date);
System.out.println(date2);
代码语言:javascript
复制
//显示结果,默认时间格式如下
Mon Nov 25 17:20:59 CST 2019
Mon Nov 25 17:20:17 CST 2019

date主要方法

在这里插入图片描述
在这里插入图片描述
  • compareTo ’
代码语言:javascript
复制
//使用上面创建的date和date2
System.out.println(date.compareTo(date2));
System.out.println(date2.compareTo(date));
System.out.println(date2.compareTo(new Date(1574673617000L)));
代码语言:javascript
复制
//显示结果如下
//将需要比较的日期和括号内日期相比较
1  //括号内日期比前面日期小
-1 //括号内日期比前面日期大
0  //两日期相等
  • clone
代码语言:javascript
复制
Object clone = date.clone();
  • getTime
代码语言:javascript
复制
//获取时间毫秒数
long time = date.getTime();
System.out.println(date.getTime());
  • after,before
代码语言:javascript
复制
//判读时间前后
boolean before = date.before(date2);
boolean after = date.after(date2);
  • toInstant
代码语言:javascript
复制
Instant instant = date.toInstant();
System.out.println(instant);
代码语言:javascript
复制
//显示标准时间,时区相差8
2019-11-25T09:55:27.543Z
  • from
代码语言:javascript
复制
Date from = Date.from(instant);
System.out.println(from);

下面一些过时方法,使用Clandar类方法代替了

在这里插入图片描述
在这里插入图片描述
2)使用java.sql 创建
在这里插入图片描述
在这里插入图片描述

发现sql包下的Date类没有无参构造方法,使用util包的Date注入一个long类型的date

代码语言:javascript
复制
 Date date = new Date(new java.util.Date().getTime());
 System.out.println(date);
代码语言:javascript
复制
//显示结果,日期格式如下,说明sql包的Date类重写了toString 方法,没有了详细时间
2019-11-25
在这里插入图片描述
在这里插入图片描述

sql包下的Date类继承于util包的Date,方法基本一致,sql包的Date只有日期,适用于sql,一般使用util包就行。

  • toLocalDate()
代码语言:javascript
复制
//转换成LocalDate
 LocalDate localdate = date.toLocalDate();
java sql.date和util.date区别

不同点

1. java.sql.date是针对sql使用的,只有日期部分,没有时间部分

2. java.util.date是java.sql.date的父类

之间的转换关系

java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime());

Calendar类

Calendar是一个抽象类不能像Date类直接通过new创建。通过内部的getInstance方法创建。

代码语言:javascript
复制
Calendar instance = Calendar.getInstance();
System.out.println(instance);
代码语言:javascript
复制
//显示结果,默认toString比较复杂
java.util.GregorianCalendar[time=1574735939207,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=10,WEEK_OF_YEAR=48,WEEK_OF_MONTH=5,DAY_OF_MONTH=26,DAY_OF_YEAR=330,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=4,AM_PM=0,HOUR=10,HOUR_OF_DAY=10,MINUTE=38,SECOND=59,MILLISECOND=207,ZONE_OFFSET=28800000,DST_OFFSET=0]

常用方法如下

在这里插入图片描述
在这里插入图片描述
  • compareTo
代码语言:javascript
复制
//和Date类方法类似,返回值
1  //括号内日期比前面日期小
-1 //括号内日期比前面日期大
0  //两日期相等
int i = instance.compareTo(Calendar.getInstance());
  • getTime
代码语言:javascript
复制
//返回Date类
Date time = instance.getTime();
System.out.println(time);
  • get 重要方法
代码语言:javascript
复制
//传入Calendar类定义的常量,返回对应信息
int i1 = instance.get(Calendar.DAY_OF_WEEK);
int i2 = instance.get(Calendar.DAY_OF_MONTH);
System.out.println(i1);
System.out.println(i2);
//
3
26
  • setTime
代码语言:javascript
复制
//设置时间,传入Date类型
instance.setTime(new Date());
  • set
代码语言:javascript
复制
//设置时间,通过Calendar常量
instance.set(Calendar.YEAR,2019);
instance.set(Calendar.MONTH,11);
//直接设置,后面还可以接时分秒
instance.set(2019,11,26);
新日期类LocalDate,LocalTime,LocalDateTime

前面sql包Date类的toLocalDate()方法,就是将其转换成新日期类。

Java 8新增了LocalDate和LocalTime接口,方法更加实用。 java.util.Date和SimpleDateFormatter都不是线程安全的,而LocalDate和LocalTime和最基本的String一样,是不变类型,不但线程安全,而且不能修改。 Java 8中,日期和时间被明确划分为LocalDate和LocalTime,LocalDate无法包含时间,LocalTime无法包含日期。

构造方法私有了,通过内置的now()方法新建

代码语言:javascript
复制
LocalDate date = LocalDate.now();
LocalTime time = LocalTime.now();
LocalDateTime dateTime = LocalDateTime.now();
System.out.println(date);
System.out.println(time);
System.out.println(dateTime);
代码语言:javascript
复制
//显示如下
2019-11-26
13:57:57.440
2019-11-26T13:57:57.440

常用方法

在这里插入图片描述
在这里插入图片描述
格式化日期,SimpleDateFormat
  • Date格式化 SimpleDateFormat.parse()方法将String转为Date
代码语言:javascript
复制
 Date date = new Date();
 System.out.println(date);
  //使用SimpleDateFormat,自定义格式
  SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  String format = dateFormat.format(date);
  System.out.println(format);
  //转化后是String,将String 转换成Date
  try {
      Date parse = dateFormat.parse(format);
  } catch (ParseException e) {
      e.printStackTrace();
  }
代码语言:javascript
复制
//显示如下
Tue Nov 26 15:00:04 CST 2019
2019-11-26 15:00:04
Tue Nov 26 15:00:04 CST 2019
  • Calendar格式化
代码语言:javascript
复制
//getTime方法将Calendar转换成Date后在格式化
 Calendar instance = Calendar.getInstance();
 Date date = instance.getTime();
 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 String format = dateFormat.format(date);
 System.out.println(format);
  • LocalDate格式化
代码语言:javascript
复制
LocalDate date = LocalDate.now();
LocalTime time = LocalTime.now();
LocalDateTime dateTime = LocalDateTime.now();
System.out.println(date);
System.out.println(time);
System.out.println(dateTime);
//显示如下
2019-11-26
15:15:23.722
2019-11-26T15:15:23.722

格式化 localDate 自带format()方法,需要传参DateTimeFormatter

代码语言:javascript
复制
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMdd");
String format = date.format(dateTimeFormatter);
System.out.println(format);
DateTimeFormatter dateTimeFormatter2 = DateTimeFormatter.ofPattern("HH:mm:ss");
String format2 = time.format(dateTimeFormatter2);
System.out.println(format2);
//显示如下
20191126
16:08:52
时间戳(timestamp)

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

  • 获取当前时间戳
代码语言:javascript
复制
 //获取时间戳,单位毫秒
 long l = System.currentTimeMillis();
  System.out.println(l);
  //
  Date date = new Date();
  long time = date.getTime();
  System.out.println(time);
  //
  long timeInMillis = Calendar.getInstance().getTimeInMillis();
  System.out.println(timeInMillis);
  • 时间戳转日期
代码语言:javascript
复制
//Date构造可直接转换
Date date1 = new Date(1574758172536L);
System.out.println(date1);
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Date类及其方法
    • 1)使用java.util 创建
      • 2)使用java.sql 创建
        • java sql.date和util.date区别
        • Calendar类
        • 新日期类LocalDate,LocalTime,LocalDateTime
        • 格式化日期,SimpleDateFormat
        • 时间戳(timestamp)
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档