1. Date 类的概述和构造方法
1.常用构造方法
Date 代表了一个特定的时间,精确到毫秒
方法名 | 说明 |
---|---|
public Date() | 分配一个 Date 对象,并初始化,以便它代表它被分配的时间,精准到毫秒 |
public Date( long date ) | 分配一个 Date 对象,并将其初始化为表示从标准基准时间起指定的毫秒数 |
// public Date(): 分配一个 Date 对象,并初始化,以便它代表它被分配的时间,精准到毫秒
Date d1=new Date();
System.out.println(d1); // 输出结果为 Wed Nov 24 18:20:51 GMT+08:00 2021
// public Date( long date ): 分配一个 Date 对象,并将其初始化为表示从标准基准时间起指定的毫秒数
long l=1000*60*60;
Date d2=new Date(l);
System.out.println(d2); // 输出结果为 Thu Jan 01 09:00:00 GMT+08:00 1970
2. Date 类的常用方法
方法名 | 说明 |
---|---|
public long getTime() | 获取的是日起对象从1970年1月1日 00:00:00 到现在的毫秒值 |
public void setTime( long time ) | 设置时间,给的是毫秒值 |
//创建日起对象
Date d = new Date();
System.out.println(d.getTime() * 1.0 / 1000 / 60 / 60 / 24 / 365 + "年"); // 输出结果为 51.93270544111491年
long time = System.currentTimeMillis(); //系统现在的时间
d.setTime(time);
System.out.println(d); // 输出结果为 Wed Nov 24 18:29:58 GMT+08:00 2021
2. 日期类 SimpleDateFormat 类概述
1. SimpleDateFormat 的构造方法
方法名 | 说明 |
---|---|
public SimpleDateFormat() | 构造一个 SimpleDateFormat ,使用默认模式和日期格式 |
public SimpleDateFormat( String pattern) | 构造一个SimpleDateFormat 使用给定的模式和默认的日期格式 |
-
格式化(从 Date 到 String )
public final String format( Date date ):将日期格式化成日期 / 时间字符串
-
解析(从 String 到 Date )
public Date parse( String source):从给定字符串开始解析文本以生成日期
//格式化从Date到String
Date d=new Date();
SimpleDateFormat sdf =new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String s = sdf.format(d);
System.out.println(s); // 输出结果为 2021年11月24日 18:53:38
//解析从String到Date
String ss="2021年10月29日 18时18分18秒";
SimpleDateFormat sdf2=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
Date dd=sdf2.parse(ss);
System.out.println(dd); // 输出结果为 Fri Oct 29 18:18:18 GMT+08:00 2021
3.日期工具类的练习案例
定义一个日期工具类,包含两个方法:1.把日期转换为指定格式的字符串;2.把字符串解析为指定格式的日期,然后定义一个测试类
package Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtils {
private DateUtils(){}
public static String dateToString(Date date,String format){
SimpleDateFormat sdf=new SimpleDateFormat(format);
String s=sdf.format(date);
return s;
}
public static Date stringToDate(String s,String format) throws ParseException {
SimpleDateFormat sdf=new SimpleDateFormat(format);
Date d=sdf.parse(s);
return d;
}
}
测试类
package Date;
import java.text.ParseException;
import java.util.Date;
public class DateUtilsDemo {
public static void main(String[] args) throws ParseException {
Date d=new Date();
String s1= DateUtils.dateToString(d,"yyyy年MM月dd日 HH:mm:ss");
System.out.println(s1); // 输出结果为 2021年11月24日 19:05:58
String s2=DateUtils.dateToString(d,"yyyy年MM月dd日");
System.out.println(s2); // 输出结果为 2021年11月24日
String s3=DateUtils.dateToString(d,"HH:mm:ss");
System.out.println(s3); // 输出结果为 19:05:58
String s4=DateUtils.dateToString(d,"ss");
System.out.println(s4); // 输出结果为 58
String ss="2021-10-29 19:00:00";
Date s=DateUtils.stringToDate(ss,"yyyy-MM-dd HH:mm:ss");
System.out.println(s); // 输出结果为 Fri Oct 29 19:00:00 GMT+08:00 2021
}
}
4. Calendar 类概述
Calendar c=Calendar.getInstance();
System.out.println(c);
//输出结果为 java.util.GregorianCalendar[time=1637752371771,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT+08:00",offset=28800000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2021,MONTH=10,WEEK_OF_YEAR=48,WEEK_OF_MONTH=4,DAY_OF_MONTH=24,DAY_OF_YEAR=328,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=7,HOUR_OF_DAY=19,MINUTE=12,SECOND=51,MILLISECOND=771,ZONE_OFFSET=28800000,DST_OFFSET=0]
//使用 public int get(int field) 方法
System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月"+c.get(Calendar.DATE)+"日");
//输出结果为 2021年11月24日
Calendar 的常用方法
方法名 | 说明 |
---|---|
public int get( int field ) | 返回给定日历字段的值 |
public abstract void add( int field , int amount ) | 根据日历的规则,将指定的时间量添加或减去给定的日历字段 |
public final void set( int year , int month , int date ) | 设置当前日历的年月日 |
Calendar c=Calendar.getInstance();
System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月"+c.get(Calendar.DATE)+"日");
//输出结果为 2021年11月24日
Calendar c=Calendar.getInstance();
c.add(Calendar.YEAR,10);
c.add(Calendar.DATE,-10);
System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月"+c.get(Calendar.DATE)+"日");
// 输出结果为 2031年11月15日
c.set(2021,9,29);
System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月"+c.get(Calendar.DATE)+"日");
// 输出结果为 2021年10月29日
练习案例
二月天:输入任意一年,输出这一年的二月有多少天
package Calendar;
import java.util.Calendar;
import java.util.Scanner;
public class Calendar4 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int year =sc.nextInt();
Calendar c=Calendar.getInstance();
c.set(year,2,1);
c.add(Calendar.DATE,-1);
System.out.println(year+"年"+"2月有"+c.get(Calendar.DATE)+"天");
// 输入 2021 输出结果为 2021年2月有28天
}
}