java的时间类汇总(齐全)

2023-02-23 0 4,559

猪小侠源码,https://www.20zxx.cn/
目录

前言

在项目开发中,我们用到了很多的时间类,很容易搞混,每次都要去网上查一遍文档,现在自己整理一下,忘记了直接查,没网也能直接撸码。同时自己也巩固一下。对时间类不熟悉的朋友也可以借鉴一下。
这边主要是整理1.8的方法,如果方法已经被弃用了则不在整理

基础类

这个部分整理一下,我们常用的时间类:

简述
java.util.Date(父类) 最基本的时间类
java.sql.Date 格式年月日,没有无参构造
java.sql.time 时分秒
java.sql.Timestamp 年月日时分秒毫秒
java.util.Calendar(日历) 可以表示年月日时分秒毫秒
java.text.DateFormat 时间可以格式化

java.util.Date的用法实例

Date date = new Date();
//Date date1 = new Date(0L); // 可以传入Long值,表示距离1970年1月1日00:00:00 毫秒值 // 默认当前
System.out.println(\"[java.util.Date] \" + date);            // 默认输出格式
System.out.println(\"[java]date.Date]--getTime() \" + date.getTime());  // 时间戳 距离1970.1.1的毫秒数
System.out.println(\"[java]date.Date]--toInstant() \" + date.toInstant()); // 转化成Instant格式

结果:
java的时间类汇总(齐全)

java.sql.Date的用法实例

java.sql.Date date = new java.sql.Date(new Date().getTime()); // 构造函数 传入Long值,是距离1970年1月1日的毫秒值
System.out.println(\"[java.sql.Date] \" + date);
date.setTime(0L);   // 相当于重置一下时间,填入的还是Long值
System.out.println(\"[java.sql.Date] - setTime(0L) 后 \" + date);

结果:
java的时间类汇总(齐全)

java.sql.Time的用法实例

// System.currentTimeMillis() 获取的值 和 new java.util.Date的getTime的值是一样的
// 但这个不能保证唯一,如果在短时间内重复获取可能会获得相同的值
Time time = new Time(System.currentTimeMillis()); // 构造函数 传入的Long的值
System.out.println(\"[java.sql.Time] \" + time);   // 时:分:秒
time.setTime(0L); // 重置时间
System.out.println(\"[java.sql.Time] - setTime(0L) 后 \" + time);

结果:
java的时间类汇总(齐全)

java.sql.Timestamp 用法实例

Long systemTime = System.currentTimeMillis();
Timestamp timestamp = new Timestamp(systemTime);
//       timestamp.setTime(0L);   // 这个不解释和之前的一样
System.out.println(\"[System.currentTimeMillis()] \" + systemTime);
System.out.println(\"[java.sql.Timestamp] \" + timestamp);
System.out.println(\"[java.sql.Timestamp] - getNanos() \" + timestamp.getNanos());
System.out.println(\"[java.sql.Timestamp] - getTime() \" + timestamp.getTime());
timestamp.setNanos(892317);  // 设置纳秒级时间
System.out.println(\"[java.sql.Timestamp] -setNanos(100) 后 \" + timestamp);

结果:
java的时间类汇总(齐全)

java.util.Calendar 用法实例

这个不是线程安全的,这个的优势在于我可以获取到相应的年月日时分秒,这个主要通过get方法获取,不过直接用底下的simpleDateFormat,这边做了解

       Calendar calendar = new GregorianCalendar();
       System.out.println(\"[java.util.Calendar--getTime] \" + calendar.getTime());
       System.out.println(\"[java.util.Calendar--getWeekYear] \" + calendar.getWeekYear());
       System.out.println(\"[java.util.Calendar--getMinimalDaysInFirstWeek ] \"  + calendar.getMinimalDaysInFirstWeek());
       System.out.println(\"[java.util.Calendar--getFirstDayOfWeek ] \"  + calendar.getFirstDayOfWeek());
       System.out.println(\"[java.util.Calendar--getTimeInMillis ] \"  + calendar.getTimeInMillis());
       System.out.println(\"[java.util.Calendar--getWeeksInWeekYear ] \"  + calendar.getWeeksInWeekYear());
       System.out.println(\"[java.util.Calendar--getMinimalDaysInFirstWeek ] \"  + calendar.getMinimalDaysInFirstWeek());

       // 当前时间 2022-09-07
       System.out.println(\"[java.util.Calendar--calendar.getActualMaximum(Calendar.DATE)] \" + calendar.getActualMaximum(Calendar.DATE));
       System.out.println(\"[java.util.Calendar--calendar.get(Calendar.YEAR)] \" + calendar.get(Calendar.YEAR));
       System.out.println(\"[java.util.Calendar--calendar.get(Calendar.MONTH)] \" + calendar.get(Calendar.MONTH));
       System.out.println(\"[java.util.Calendar--calendar.get(Calendar.DATE)] \" + calendar.get(Calendar.DATE));
       System.out.println(\"[java.util.Calendar--calendar.get(Calendar.DAY_OF_WEEK) \" + calendar.get(Calendar.DAY_OF_WEEK));
       System.out.println(\"[java.util.Calendar--calendar.getMaximum(Calendar.DATE) \" + calendar.getMaximum(Calendar.DATE));

java的时间类汇总(齐全)

java.text.SimpleDateFormat用法实例

这个主要是可以自己去定义输出/输入时间的格式,比如Date默认的是 1970-01-01,现在可以修改成必入 1970/01/01

底下的是类型的匹配的字符

Letter Date or Time Component Presentation Examples
G Era designator Text AD
y Year Year 199696
Y Week year Year 200909
M Month in year (context sensitive) Month JulyJul07
L Month in year (standalone form) Month JulyJul07
w Week in year Number 27
W Week in month Number 2
D Day in year Number 189
d Day in month Number 10
F Day of week in month Number 2
E Day name in week Text TuesdayTue
u Day number of week (1 = Monday, ..., 7 = Sunday) Number 1
a Am/pm marker Text PM
H Hour in day (0-23) Number 0
k Hour in day (1-24) Number 24
K Hour in am/pm (0-11) Number 0
h Hour in am/pm (1-12) Number 12
m Minute in hour Number 30
s Second in minute Number 55
S Millisecond Number 978
z Time zone General time zone Pacific Standard TimePSTGMT-08:00
Z Time zone RFC 822 time zone -0800
X Time zone ISO 8601 time zone -08-0800-08:00

其中的类型为:

  • Text: 对于格式化,如果模式字母的数量是4以上,则使用完整的形式; 否则,如果有的话,使用简短或缩写形式。 对于解析,两种形式都是接受的,与模式字母的数量无关。

SimpleDateFormat sdf = new SimpleDateFormat(\"E\");
SimpleDateFormat sdf1 = new SimpleDateFormat(\"EE\");
SimpleDateFormat sdf2 = new SimpleDateFormat(\"EEE\");
SimpleDateFormat sdf3 = new SimpleDateFormat(\"EEEE\");

System.out.println(\"[java.text.SimpleDateFormat--E] \" + sdf.format(new Date()));
System.out.println(\"[java.text.SimpleDateFormat--EE] \" + sdf1.format(new Date()));
System.out.println(\"[java.text.SimpleDateFormat--EEE] \" + sdf2.format(new Date()));
System.out.println(\"[java.text.SimpleDateFormat--EEEE] \" + sdf3.format(new Date()));

java的时间类汇总(齐全)

  • Number: 对于格式化,模式字母的数量是最小位数,而较短的数字将零填充到此数量。 对于解析,模式字母的数量将被忽略,除非需要分隔两个相邻的字段。

SimpleDateFormat sdf4 = new SimpleDateFormat(\"w\");
SimpleDateFormat sdf5 = new SimpleDateFormat(\"ww\");
SimpleDateFormat sdf6 = new SimpleDateFormat(\"www\");
SimpleDateFormat sdf7 = new SimpleDateFormat(\"wwww\");

System.out.println(\"[java.text.SimpleDateFormat--w] \" + sdf4.format(new Date()));
System.out.println(\"[java.text.SimpleDateFormat--ww] \" + sdf5.format(new Date()));
System.out.println(\"[java.text.SimpleDateFormat--www] \" + sdf6.format(new Date()));
System.out.println(\"[java.text.SimpleDateFormat--wwww] \" + sdf7.format(new Date()));

java的时间类汇总(齐全)

  • Year:对于格式化,如果模式字母数为2,那么年份将被截断为2位数; 否则被解释为Number(不足补0)

SimpleDateFormat sdf8 = new SimpleDateFormat(\"y\");
SimpleDateFormat sdf9 = new SimpleDateFormat(\"yy\");
SimpleDateFormat sdf10 = new SimpleDateFormat(\"yyy\");
SimpleDateFormat sdf11 = new SimpleDateFormat(\"yyyy\");
SimpleDateFormat sdf12 = new SimpleDateFormat(\"yyyyy\");

System.out.println(\"[java.text.SimpleDateFormat--y] \" + sdf8.format(new Date()));
System.out.println(\"[java.text.SimpleDateFormat--yy] \" + sdf9.format(new Date()));
System.out.println(\"[java.text.SimpleDateFormat--yyy] \" + sdf10.format(new Date()));
System.out.println(\"[java.text.SimpleDateFormat--yyyy] \" + sdf11.format(new Date()));
System.out.println(\"[java.text.SimpleDateFormat--yyyyy] \" + sdf12.format(new Date()));

java的时间类汇总(齐全)

  • Month: 如果模式字母数为3以上,则该月份被解释为text; 否则,它被解释为number

SimpleDateFormat sdf8 = new SimpleDateFormat(\"M\");
SimpleDateFormat sdf9 = new SimpleDateFormat(\"MM\");
SimpleDateFormat sdf10 = new SimpleDateFormat(\"MMM\");
SimpleDateFormat sdf11 = new SimpleDateFormat(\"MMMM\");
SimpleDateFormat sdf12 = new SimpleDateFormat(\"MMMMM\");

System.out.println(\"[java.text.SimpleDateFormat--M] \" + sdf8.format(new Date()));
System.out.println(\"[java.text.SimpleDateFormat--MM] \" + sdf9.format(new Date()));
System.out.println(\"[java.text.SimpleDateFormat--MMM] \" + sdf10.format(new Date()));
System.out.println(\"[java.text.SimpleDateFormat--MMMM] \" + sdf11.format(new Date()));
System.out.println(\"[java.text.SimpleDateFormat--MMMMM] \" + sdf12.format(new Date()));

java的时间类汇总(齐全)

其他的类型和时区有关,暂时不去做描述先知道上面的常见的几个

举个常见的例子:
SimpleDateFormat sdf13 = new SimpleDateFormat(\"y-MM-dd kk:mm:ss\"); // 这里的年也可以用 yyyy,这样子和数量一致,好理解罢了
System.out.println(\"[java.text.SimpleDateFormat--y-MM-dd kk:mm:ss] \" + sdf13.format(new Date()));

java的时间类汇总(齐全)
 常用方法 parse,format
SimpleDateFormat sdf13 = new SimpleDateFormat(\"y-MM-dd\");
// 字符串转化为Date, 需要抛出异常
Date date = sdf13.parse(\"2022-01-02\");
System.out.println(\"[java.text.SimpleDateFormat--parse] \" + date.toString());
// Date转化为String
String currentDateString = sdf13.format(new Date());
System.out.println(\"[java.text.SimpleDateFormat--format] \" + currentDateString);

java的时间类汇总(齐全)
接下来的时间类都是jdk1.8新增的

相对来说,底下的时间是没有偏移量的比如1就代表周一,而不要加。然后还是线程安全的
底下的我放在一起做个比较

LocalDate,LocalTime,LocalDateTime用法实例

/**
* 获取当前的日期
*/
LocalDate localDate = LocalDate.now();
System.out.println(\"[java.time.LocalDate] -- now \" + localDate);
LocalTime localTime = LocalTime.now();
System.out.println(\"[java.time.LocalTime ] -- now \" + localTime);
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(\"[java.time.LocalDateTime ] -- now \" + localDateTime);
/**
* 获取指定的日期
*/
LocalDate localDate1 = LocalDate.of(2022,9,7);
System.out.println(\"[java.time.LocalDate] -- of \" + localDate1);
LocalTime localTime1 = LocalTime.of(12,53,18);
System.out.println(\"[java.time.LocalTime] -- of \" + localTime1);
LocalDateTime localDateTime1 = LocalDateTime.of(2000, 12,3,12,3,4);
System.out.println(\"[java.time.LocalDateTime ] -- of \" + localDateTime1);
/**
* get的一些方法
*/
System.out.println(\"[java.time.LocalDateTime ] -- getYear \" + localDate1.getYear());
System.out.println(\"[java.time.LocalDateTime ] -- getDayOfMonth \" + localDate1.getDayOfMonth());
System.out.println(\"[java.time.LocalDateTime ] -- getMonth \" + localDate1.getMonth());
System.out.println(\"[java.time.LocalDateTime ] -- getMonthValue \" + localDate1.getMonthValue());



/**
* with 就是重新赋值(原LocalDateTime不变)
* 这边就举一个例
*/
LocalDateTime localDateTime2 = localDateTime1.withYear(2011);
System.out.println(\"[java.time.LocalDateTime ] --原来 2000年 \" + localDateTime1);
System.out.println(\"[java.time.LocalDateTime ] --原来 2000年 withYear(2011) \" + localDateTime2);

/**
* 加 减操作
* 举一个加的例子
* minusXXX 这个是减
*/
System.out.println(\"[java.time.LocalDateTime ] --原来 12月份 \" + localDateTime1.getMonthValue());
System.out.println(\"[java.time.LocalDateTime ] --原来 12月份 plusMonths(1) \" + localDateTime1.plusMonths(1).getMonthValue());

java的时间类汇总(齐全)

DateTimeFormatter

这个主要可以用来进行String 和 LocalXXX之间的转化,案例

DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(\"yyyy/MM/dd HH:mm:ss\");
System.out.println(dateTimeFormatter.format(LocalDateTime.now()));

java的时间类汇总(齐全)

总结

这边总结了基本常用的时间类,没有把所有的方法都列出来,不过常见的列出来了,如果没有强制要求建议使用 1.8

猪小侠源码,https://www.20zxx.cn/
资源下载此资源下载价格为1小猪币,终身VIP免费,请先
由于本站资源来源于互联网,以研究交流为目的,所有仅供大家参考、学习,不存在任何商业目的与商业用途,如资源存在BUG以及其他任何问题,请自行解决,本站不提供技术服务! 由于资源为虚拟可复制性,下载后不予退积分和退款,谢谢您的支持!如遇到失效或错误的下载链接请联系客服QQ:442469558

:本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可, 转载请附上原文出处链接。
1、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
2、本站提供的模板、软件工具等其他资源,均不包含技术服务,请大家谅解!
3、本站提供的资源仅供下载者参考学习,请勿用于任何商业用途,请24小时内删除!
4、如需商用,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
5、本站部分资源存放于百度网盘或其他网盘中,请提前注册好百度网盘账号,下载安装百度网盘客户端或其他网盘客户端进行下载;
6、本站部分资源文件是经压缩后的,请下载后安装解压软件,推荐使用WinRAR和7-Zip解压软件。
7、如果本站提供的资源侵犯到了您的权益,请邮件联系: 442469558@qq.com 进行处理!

猪小侠源码-最新源码下载平台 PHP教程 java的时间类汇总(齐全) http://www.20zxx.cn/585717/xuexijiaocheng/qes.html

猪小侠源码,优质资源分享网

常见问题
  • 本站所有资源版权均属于原作者所有,均只能用于参考学习,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,建议提前注册好百度网盘账号,使用百度网盘客户端下载
查看详情

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务