2024年常用基础类 java

常用基础类 java目录 前言 基础类 java util Date 的用法实例 java sql Date 的用法实例 java sql Time 的用法实例 java sql Timestamp 用法实例 java util Calendar 用法实例 java text SimpleDateFo 用法实例 LocalDate LocalTime LocalDateTim 用法实例

大家好,我是讯享网,很高兴认识大家。



前言

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

这边主要是整理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.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.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.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();  // 设置纳秒级时间 System.out.println("[java.sql.Timestamp] -setNanos(100) 后 " + timestamp);

结果:

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.text.SimpleDateFormat用法实例

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

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

LetterDate or Time ComponentPresentationExamplesEra designatorTextYearYear; Week yearYear; Month in year (context sensitive)Month; ; Month in year (standalone form)Month; ; Week in yearNumberWeek in monthNumberDay in yearNumberDay in monthNumberDay of week in monthNumberDay name in weekText; Day number of week (1 = Monday, ..., 7 = Sunday)NumberAm/pm markerTextHour in day (0-23)NumberHour in day (1-24)NumberHour in am/pm (0-11)NumberHour in am/pm (1-12)NumberMinute in hourNumberSecond in minuteNumberMillisecondNumberTime zoneGeneral time zone; ; Time zoneRFC 822 time zoneTime zoneISO 8601 time zone; ;

其中的类型为:

  • 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()));

  • 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()));

  • 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 常用基础类 java 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()));

  • 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()));

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

举个常见的例子:

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()));

常用方法 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);

接下来的时间类都是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());

DateTimeFormatter

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

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

总结

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

小讯
上一篇 2024-12-24 07:36
下一篇 2024-12-25 10:12

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/536.html