- Date类的构建方式(属于java.util包)
- 使用构造方法创建日期对象
Date date=new Date();//系统的当前时间
Date date=new Date(long型参数值);//从1970年1月1日0点0分开始描述的毫秒数
- 使用日期对象的getTime()方法获取日期的毫秒数(1970 1.1 0:00)
- 日期的常用方法
| package com.test; import java.util.*; public class DemoClass2 { public static void main(String[] args) { Date date1=new Date(); System.out.println("date1-->"+date1.toLocaleString()); //10天前 Date date2=new Date(System.currentTimeMillis()-24*10*60*60*1000); System.out.println("date2-->"+date2.toLocaleString()); //测试date1是否在date2之后 boolean flag=date1.after(date2); if(flag){ System.out.println(date1.toLocaleString()+"在"+date2.toLocaleString()+"之后!"); } //测试date1是否在date2之前 flag=date1.before(date2); if(flag){ System.out.println(date1.toLocaleString()+"在"+date2.toLocaleString()+"之前!"); }else{ System.out.println(date1.toLocaleString()+"不在"+date2.toLocaleString()+"之前!"); } //比较date1和date2的顺序 int code=date1.compareTo(date2); System.out.println("code-->"+code); if(code>0){ System.out.println("date1在date2之后!"); } } } |
- 日期格式化类DateFormat(抽象类)
- 对日期进行格式化处理
| package com.test; import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput; import java.text.DateFormat; import java.text.ParseException; import java.util.*; public class DemoClass3 { public static void main(String[] args) { Date date=new Date();//创建日期对象 DateFormat dateFormat=DateFormat.getDateInstance();//获取日期格式器 DateFormat dateTimeFormat=DateFormat.getDateTimeInstance();//获取日期时间格式器 DateFormat timeFormat=DateFormat.getTimeInstance();//获取时间的格式器 String sdate=dateFormat.format(date);//将日期转为字符串的日期描述 String datetime=dateTimeFormat.format(date);//将日起转为字符串的日期事件描述 String time=timeFormat.format(date);//将日期转为字符串的时间描述 System.out.println("日期:"+sdate); System.out.println("日期时间:"+datetime); System.out.println("时间:"+time); System.out.println("============================================"); try { //将日期格式的字符串转为日期对象 Date date2=dateFormat.parse("2021-5-17");//解析指定的日期 //date1和date2相差几天 long d1=date.getTime(); long d2=date2.getTime(); long d3=d1-d2;//毫秒数 //计算相差的天数 long divday=Math.round((double)d3/(24*60*60*1000)); System.out.println("date1和date2相差:"+divday+"天!"+"相差:"+divday/30+"月!"); } catch (ParseException e) { e.printStackTrace(); } } } |
日期:2021-11-17
日期时间:2021-11-17 9:53:51
时间:9:53:51
date1和date2相差:184天!相差:6月!
- 日期转为字符串
| String sdate=dateFormat.format(date);//将日期转为字符串的日期描述 String datetime=dateTimeFormat.format(date);//将日起转为字符串的日期事件描述 String time=timeFormat.format(date);//将日期转为字符串的时间描述 System.out.println("日期:"+sdate); System.out.println("日期时间:"+datetime); System.out.println("时间:"+time); |
- 将字符串转为日期对象(字符串必须满足日期格式样式)
| //将日期格式的字符串转为日期对象 Date date2=dateFormat.parse("2021-5-17");//解析指定的日期 |
在使用parse方法时,必须进行异常处理。
- 日期格式的样式
示例:
| package com.test; import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer; import java.util.*; import java.text.*; public class DemoClass4 { public static void main(String[] args) { Date date=new Date(); DateFormat df0=DateFormat.getDateInstance(); DateFormat df1=DateFormat.getDateInstance(DateFormat.FULL); DateFormat df2=DateFormat.getDateInstance(DateFormat.SHORT); DateFormat df3=DateFormat.getDateInstance(DateFormat.MEDIUM);//默认 DateFormat df4=DateFormat.getDateInstance(DateFormat.LONG);//长格式 DateFormat df5=DateFormat.getDateInstance(DateFormat.FULL); System.out.println("默认--->"+df0.format(date)); System.out.println("DateFormat.FULL--->"+df1.format(date)); System.out.println("DateFormat.SHORT--->"+df2.format(date)); System.out.println("DateFormat.MEDIUM--->"+df3.format(date)); System.out.println("DateFormat.LONG--->"+df4.format(date)); System.out.println("DateFormat.FULL--->"+df5.format(date)); } } |
默认--->2021-11-17
DateFormat.FULL--->2021年11月17日 星期三
DateFormat.SHORT--->21-11-17
DateFormat.MEDIUM--->2021-11-17
DateFormat.LONG--->2021年11月17日
DateFormat.FULL--->2021年11月17日 星期三
日期风格适用于日期格式器。
- 自定义日期格式
- 创建SimpleDateFormat日期格式化对象(指定日期格式
- 示例
| package com.test; import java.util.*; import java.text.*; public class SimpleDateFormatDemo { public static void main(String[] args) { Date date=new Date(); Scanner input=new Scanner(System.in); SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String sdate= simpleDateFormat.format(date);//将日起转为字符串 System.out.println("当前日期:"+sdate); //将字符串转为日期 System.out.println("请输入日期(1900-01-01):"); String mydate=input.nextLine(); try { //将日期字符串转为日期对象 Date date1=simpleDateFormat.parse(mydate); System.out.println(date1); } catch (ParseException e) { e.printStackTrace(); } } } |
- 日历类的创建方式
Calendar cld=Calendar.getInstance();//空的构建
Calendar calendar2=Calendar.getInstance(TimeZone.getTimeZone("America/Los_Angeles"),Locale.CHINA);
示例如下:
| package com.test; import java.util.*; public class CalendarDemo1 { public static void main(String[] args) { Calendar calendar=Calendar.getInstance(); //System.out.println(calendar.getWeekYear()); //使用指定时区和语言环境获得日历对象 Calendar calendar2=Calendar.getInstance(TimeZone.getTimeZone("America/Los_Angeles"),Locale.CHINA); System.out.println("获取年份:"+calendar2.get(Calendar.YEAR));//获取年份 System.out.println("获取月份:"+(calendar2.get(Calendar.MONTH)+1)); System.out.println("获取日期:"+(calendar2.get(Calendar.DAY_OF_MONTH)+1));//每月的第1天从0开始计数 System.out.println("获取星期:"+(calendar2.get(Calendar.DAY_OF_WEEK)));//每星期的第一天从0开始计数 System.out.println(""); } } |
获取年份:2021
获取月份:11
获取日期:17
获取星期:3
获取星期的第x天:3
- 使用Calendar 类设置日期(赋值)
| package com.test; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; import java.util.TimeZone; public class CalendarDemo2 { public static void main(String[] args) { Calendar calendar=Calendar.getInstance(); //设置日期值 calendar.set(2011,12,17,10,11,11); //通过calendar获取日期对象 Date date=calendar.getTime(); SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String sdate=simpleDateFormat.format(date); System.out.println("日期:"+sdate); } } |
课堂练习:
- 完成上述所有代码
- 从键盘输入日期,分别使用DateFormat、SimpleDateFormat和Calendar类进行包装处理。
- 编写工具类,对日起进行格式化转换,分别转为字符串和日期类型的数据



