当前位置:网站首页 > Java基础 > 正文

常用基础类 java



前言

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

这边主要是整理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

  • 上一篇: java正则基础
  • 下一篇: java 基础算法试题
  • 版权声明


    相关文章:

  • java正则基础2025-04-15 10:26:02
  • java基础中文2025-04-15 10:26:02
  • 女生零基础自学java2025-04-15 10:26:02
  • java的基础环境2025-04-15 10:26:02
  • java基础进阶知识2025-04-15 10:26:02
  • java 基础算法试题2025-04-15 10:26:02
  • java基础弱2025-04-15 10:26:02
  • 基础 Java2025-04-15 10:26:02
  • JAVA基础驿站2025-04-15 10:26:02
  • java基础手册 csdn2025-04-15 10:26:02