表示日期和时间的类
毫秒:千分之一秒 1000毫秒=1秒
毫秒值可以对时间和日期进行计算
时间原点:1970年1月1日00:00:00为0毫秒 中国属于东八区 会把时间+8小时 所以就为1970年1月1日00:08:00
空参的构造方法
Data();获取当前系统时间
有参的构造方法
Data(Long date);传递毫秒值,将毫秒值转换为对应的日期
public long getTime();获取当前系统的毫秒值(相当于currentTimeMillis()方法)
public class Demo02Date {
public static void main(String[] args) {
Date date = new Date(); //Date空参数构造方法
System.out.println(date); //说明重写了toString Wed Nov 06 22:05:35 CST 2019
long l= date.getTime(); //获取当前系统的毫秒值 相当于currentTimeMillis()方法
System.out.println(l); //1573049263536
Date date1 = new Date(0); //将毫秒值转化为日期时间
System.out.println(date1); //Thu Jan 01 08:00:00 CST 1970
}
}
DateFormat类
java.text.DateFormat:是日期/时间格式化子类的抽象类
作用:格式化(也就是日期 —> 文本)、解析(文本 —> 日期)
成员方法:
- String format(Date date); 按照指定的模式,把Date日期,按照指定的模式格式化为指定的字符串
- Date parse(String soutce); 把符合模式的字符串,解析为date日期
DateFormat是抽象类,我们可以使用它的子类SimpleDateFormat
SimpleDateFormat类
构造方法
- SimpleDateFormat(String pattern); 用指定的模式和默认语言环境的日期格式符号构造SimpleDateFormat
- 参数 : String pattern:传递指定的模式 y:年 、M:月 、d:日 、H:时 、m:分 、s:秒
- 例如"yyyy-MM-dd HH:mm:ss" "yyyy年MM月dd日 HH时mm分ss秒"
public class Demo03DateFormat {
public static void main(String[] args) throws ParseException {
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
String str = simpleDateFormat.format(date);
System.out.println(str); //2019年11月06日 22时33分46秒
Date date1 = simpleDateFormat.parse(str); //该方法会抛出异常
System.out.println(date1);//Wed Nov 06 22:33:46 CST 2019
}
}
Calendar类
java.util.Calendar:日历类,在Date后出现,替换掉了许多Date的方法,该类将所有有可能用到的是时间信息封装为静态成员变量,方便获取。日历类就是方便获取各个时间属性的。
Calendar类是抽象类,里面提供了静态的getInstance()方法,该方法返回了Calendar类的子类对象。
- public Calendar getInstance();返回Calendar子类对象。
- public int get(int field)`:返回给定日历字段的值。
- public void set(int field, int value)`:将给定的日历字段设置为给定值。
- public abstract void add(int field, int amount)`:根据日历的规则,为给定的日历字段添加或减去指定的时间量。
- public Date getTime()`:返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
字段值 | 含义 |
YEAR | 年 |
MONTH | 月(从0开始,可以+1使用) |
DAY_OF_MONTH | 月中的天(几号) |
HOUR | 月中的天(几号) |
HOUR_OF_DAY | 时(24小时制) |
MINUTE | 分 |
SECOND | 秒 |
SECOND |
1、public Calendar getInstance();返回Calendar子类对象。
public class Demo03DateFormat {
public static void main(String[] args) throws ParseException {
Calendar calendar = Calendar.getInstance();//获取Calendar的子类
System.out.println(calendar); //重写了toString方法
//java.util.GregorianCalendar[time=1573051666123,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=10,WEEK_OF_YEAR=45,WEEK_OF_MONTH=2,DAY_OF_MONTH=6,DAY_OF_YEAR=310,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=10,HOUR_OF_DAY=22,MINUTE=47,SECOND=46,MILLISECOND=123,ZONE_OFFSET=28800000,DST_OFFSET=0]
}
}
2、public int get(int field):返回给定日历字段的值。
public class Demo04Calendar {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) +1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(year+"年"+month+"月"+day+"日"); // 2019年11月6日
}
}
3、public void set(int field, int value)`:将给定的日历字段设置为给定值。
public class Demo04Calendar {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
System.out.println(year+"年"); //2019年
calendar.set(Calendar.YEAR,2020);
int year1= calendar.get(Calendar.YEAR);
System.out.println(year1+"年"); //2020年
}
}
4、public abstract void add(int field, int amount)`:根据日历的规则,为给定的日历字段添加或减去指定的时间量。
public class Demo04Calendar {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年" + month + "月" + dayOfMonth + "日"); // 2019年10月6日
cal.add(Calendar.YEAR,1); //年份+1
cal.add(Calendar.MONTH,-1); //月份-1
int year1 = cal.get(Calendar.YEAR);
int month1 = cal.get(Calendar.MONTH);
int dayOfMonth1 = cal.get(Calendar.DAY_OF_MONTH);
System.out.println(year1 + "年" + month1 + "月" + dayOfMonth1 + "日"); //2020年9月6日
}
}
5、public Date getTime()`:返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
public class Demo04Calendar {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
System.out.println(date); //Thu Nov 07 00:01:09 CST 2019
}
}
注:
西方星期的开始为周日,中国为周一。
在Calendar类中,月份的表示是以0-11代表1-12月
日期是有大小关系的,时间靠后,时间越大