Java中Date和Calendar类有哪些实用功能?

2026-04-28 11:552阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1128个文字,预计阅读时间需要5分钟。

Java中Date和Calendar类有哪些实用功能?

1. 创建Date实例javaDate date1=new Date();System.out.println(date1);// 输出类似:Thu Jun 16 19:18:56 CST 2022

2. 获取日期的毫秒数javaSystem.out.println(date1.getTime());// 输出类似:1655378336808

1、Date 1.1 Date实例化

Date date1 = new Date(); System.out.println(date1); //Thu Jun 16 19:18:56 CST 2022 1.2 获取日期毫秒数

getTime()

System.out.println(date1.getTime()); //1655378336808 System.out.println(System.currentTimeMillis()); //通过系统获取时间1655378336867 1.3 日期格式化(从Date到String)

format(Date date)

SimpleDateFormat sdf1 = new SimpleDateFormat(); sdf1.applyPattern("yyyy-MM-dd HH:mm:ss"); //日期格式 System.out.println(sdf1.format(date1)); //2022-06-16 19:18:56 //简写 SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(sdf3.format(new Date()));

源码

public final String format(Date date) { return format(date, new StringBuffer(), DontCareFieldPosition.INSTANCE).toString(); }

字符串格式化的日期格式串的含义

//yyyy:四位的年 yy:两位的年 //MM 月份(0-11,代表1-12月) //DD 年中的天数 //dd 月份中的天数(当前的天数,第几天) //HH 24小时制(0-23) //hh 12小时制(1-12) //mm 分钟 //ss 秒数 //SSS 毫秒 1.4 日期解析(从String到Date)

parse(String source)

String dateStr = "2021-06-16 11:45:45"; Date date2 = null; try { //转换日期时,需要进行异常处理,处理ParseException,因为日期字符串可能不匹配 date2 = sdf3.parse(dateStr); System.out.println(date2); //Wed Jun 16 11:45:45 CST 2021 } catch (ParseException e) { e.printStackTrace(); }

源码

public Date parse(String source) throws ParseException { ParsePosition pos = new ParsePosition(0); Date result = parse(source, pos); if (pos.index == 0) throw new ParseException("Unparseable date: \"" + source + "\"" , pos.errorIndex); return result; } 1.5 日期比较

//日期比较,日期是对象,不可以直接使用比较运算符进行比较

方式1:直接比较两个日期对应的毫秒数,谁大,谁的日期就大(晚)

String beginTime = new String("2020-08-09 13:32:20"); String endTime = new String("2099-10-08 11:21:32"); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date beginDate = df.parse(beginTime); Date endDate = df.parse(endTime); //因为时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。所以毫秒数越大时间越晚 if(beginDate.getTime() < endDate.getTime()){ //beginDate is before endDate System.out.println("beginDate is before endDate"); }else{ System.out.println("beginDate is after endDate"); }

方式2:借助Date的自带比较方法:before和after

Java中Date和Calendar类有哪些实用功能?

if (beginDate.before(endDate)) { System.out.println("beginDate is before endDate");//beginDate is before endDate } if (endDate.after(beginDate)) { System.out.println("endDate is after beginDate");//endDate is after beginDate } 1.6 时间增加

增加毫秒数

//在当前基础上,增加1小时30分钟 Date date3 = new Date(); System.out.println("当前时间:"+sdf3.format(date3));//2022-06-16 19:50:20 //增加1小时30分钟,需要获取当前毫秒数,在加上1小时30分钟毫秒数 long time3 = date3.getTime(); long addTime = (60+30)*60*1000; //根据毫秒数,转换为日期对象 Date date4 = new Date(time3 + addTime); System.out.println("新时间:"+sdf3.format(date4));//2022-06-16 21:20:20 2、Calendar 2.1创建日历类对象

创建日历类对象,不是new出来的,而是通过日历类自带的静态方法getInstance,获取;

Calendar calendar = Calendar.getInstance();

源码

public static Calendar getInstance() { return createCalendar(TimeZone.getDefault(), Locale.getDefault(Locale.Category.FORMAT)); } 2.2获取相关信息

//获取年份 int year = calendar.get(Calendar.YEAR); System.out.println("当前年份:"+year);//2022 //获取月份,0-11代表1-12月,真实月份要+1 int month = calendar.get(Calendar.MONTH); System.out.println("当前第几个月份:"+month);//5 代表6月份 //获取天数,是一年中哪一天 int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR); System.out.println("当前天是一年中的第:"+dayOfYear); //167 2.3 通过日历类对日期进行操作

//通过日历类,获取当前日期对象 Date date = calendar.getTime(); System.out.println("当前日期:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date)); //2022-06-16 20:03:10 //在当前时间的基础上,灵活的添加时间,增加1小时30分钟 calendar.add(Calendar.HOUR,1); calendar.add(Calendar.MINUTE,30); System.out.println("新日期:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime())); //2022-06-16 21:33:10 //通过日历类,创建时间对象 Calendar calendar2 = Calendar.getInstance(); calendar2.set(Calendar.YEAR,2021); calendar2.set(Calendar.MONTH,6-1); calendar2.set(Calendar.DAY_OF_MONTH,16); System.out.println("新日期:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime())); //2022-06-16 21:33:10

本文共计1128个文字,预计阅读时间需要5分钟。

Java中Date和Calendar类有哪些实用功能?

1. 创建Date实例javaDate date1=new Date();System.out.println(date1);// 输出类似:Thu Jun 16 19:18:56 CST 2022

2. 获取日期的毫秒数javaSystem.out.println(date1.getTime());// 输出类似:1655378336808

1、Date 1.1 Date实例化

Date date1 = new Date(); System.out.println(date1); //Thu Jun 16 19:18:56 CST 2022 1.2 获取日期毫秒数

getTime()

System.out.println(date1.getTime()); //1655378336808 System.out.println(System.currentTimeMillis()); //通过系统获取时间1655378336867 1.3 日期格式化(从Date到String)

format(Date date)

SimpleDateFormat sdf1 = new SimpleDateFormat(); sdf1.applyPattern("yyyy-MM-dd HH:mm:ss"); //日期格式 System.out.println(sdf1.format(date1)); //2022-06-16 19:18:56 //简写 SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(sdf3.format(new Date()));

源码

public final String format(Date date) { return format(date, new StringBuffer(), DontCareFieldPosition.INSTANCE).toString(); }

字符串格式化的日期格式串的含义

//yyyy:四位的年 yy:两位的年 //MM 月份(0-11,代表1-12月) //DD 年中的天数 //dd 月份中的天数(当前的天数,第几天) //HH 24小时制(0-23) //hh 12小时制(1-12) //mm 分钟 //ss 秒数 //SSS 毫秒 1.4 日期解析(从String到Date)

parse(String source)

String dateStr = "2021-06-16 11:45:45"; Date date2 = null; try { //转换日期时,需要进行异常处理,处理ParseException,因为日期字符串可能不匹配 date2 = sdf3.parse(dateStr); System.out.println(date2); //Wed Jun 16 11:45:45 CST 2021 } catch (ParseException e) { e.printStackTrace(); }

源码

public Date parse(String source) throws ParseException { ParsePosition pos = new ParsePosition(0); Date result = parse(source, pos); if (pos.index == 0) throw new ParseException("Unparseable date: \"" + source + "\"" , pos.errorIndex); return result; } 1.5 日期比较

//日期比较,日期是对象,不可以直接使用比较运算符进行比较

方式1:直接比较两个日期对应的毫秒数,谁大,谁的日期就大(晚)

String beginTime = new String("2020-08-09 13:32:20"); String endTime = new String("2099-10-08 11:21:32"); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date beginDate = df.parse(beginTime); Date endDate = df.parse(endTime); //因为时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。所以毫秒数越大时间越晚 if(beginDate.getTime() < endDate.getTime()){ //beginDate is before endDate System.out.println("beginDate is before endDate"); }else{ System.out.println("beginDate is after endDate"); }

方式2:借助Date的自带比较方法:before和after

Java中Date和Calendar类有哪些实用功能?

if (beginDate.before(endDate)) { System.out.println("beginDate is before endDate");//beginDate is before endDate } if (endDate.after(beginDate)) { System.out.println("endDate is after beginDate");//endDate is after beginDate } 1.6 时间增加

增加毫秒数

//在当前基础上,增加1小时30分钟 Date date3 = new Date(); System.out.println("当前时间:"+sdf3.format(date3));//2022-06-16 19:50:20 //增加1小时30分钟,需要获取当前毫秒数,在加上1小时30分钟毫秒数 long time3 = date3.getTime(); long addTime = (60+30)*60*1000; //根据毫秒数,转换为日期对象 Date date4 = new Date(time3 + addTime); System.out.println("新时间:"+sdf3.format(date4));//2022-06-16 21:20:20 2、Calendar 2.1创建日历类对象

创建日历类对象,不是new出来的,而是通过日历类自带的静态方法getInstance,获取;

Calendar calendar = Calendar.getInstance();

源码

public static Calendar getInstance() { return createCalendar(TimeZone.getDefault(), Locale.getDefault(Locale.Category.FORMAT)); } 2.2获取相关信息

//获取年份 int year = calendar.get(Calendar.YEAR); System.out.println("当前年份:"+year);//2022 //获取月份,0-11代表1-12月,真实月份要+1 int month = calendar.get(Calendar.MONTH); System.out.println("当前第几个月份:"+month);//5 代表6月份 //获取天数,是一年中哪一天 int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR); System.out.println("当前天是一年中的第:"+dayOfYear); //167 2.3 通过日历类对日期进行操作

//通过日历类,获取当前日期对象 Date date = calendar.getTime(); System.out.println("当前日期:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date)); //2022-06-16 20:03:10 //在当前时间的基础上,灵活的添加时间,增加1小时30分钟 calendar.add(Calendar.HOUR,1); calendar.add(Calendar.MINUTE,30); System.out.println("新日期:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime())); //2022-06-16 21:33:10 //通过日历类,创建时间对象 Calendar calendar2 = Calendar.getInstance(); calendar2.set(Calendar.YEAR,2021); calendar2.set(Calendar.MONTH,6-1); calendar2.set(Calendar.DAY_OF_MONTH,16); System.out.println("新日期:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime())); //2022-06-16 21:33:10