Java Data类
距离一个固定时间点的毫秒数(long型类)表达一个特定的时间点
固定的时间点叫纪元(UTC时间1970年1月1日 00:00:00)
java.util.Date
Date的每一个实例用于表示一个确切的时间(精准为毫秒)
内部维护一个long值,该值表示自1970年1月1日00:00:00到当前Date表示的时间所经过的毫秒
Date存在时区等设计缺陷,因此大部分方法都被声明为过时的再以后的开发中不应当使用。
获取Date类
Date date = new Date();
Date date = new Date(long num); // -> 创建Date实例并设置时间为num;
// 格式:Sat Jun 21 00:00:00 CST 2025
date.getTime(); // -> 获取Date内部维护的毫秒值(long)
date.setTime(long num); // -> 设置时间为num
将时间(date)转换为自定义输出格式
Date now = new Date();
y - 年 => yyyy -> 2019年 ; yy -> 19年
M - 月 => MM -> 08月 ; M -> 8月
d - 日 => dd -> 06日 ; d -> 6日
E - 星期 => E -> 星期X
a - AM/PM => a -> 下午(PM)
H - 小时(24小时制)
h - 小时(12小时制)
m - 分钟
s - 秒
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");
sdf.format(now); // -> 返回值(String) : 2019-8-21 16:37:26
将字符串解析为Date对象
String str = " 2019-04-01 13:12:34 ";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date d = sdf.parse(str);
System.out.println(d);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar
java.util.Calendar
封装日历信息(可以对时间分量进行运算)
抽象类,规定了日历类操作时间的一系列方法
可以使用其提供的静态方法:getInstance还获取一个当前系统所在地区适用的实现类,大部分地区获取回来的是GregorianCalendar,即:阳历实现类
Calendar calendar = Calendar.getInstance();
calendar.getTime(); // -> 获取当前时间
calendar.setTime(Date date); // -> 设置Calendar表示给定的date所表示的日期
int get(int field)
获取当前Calendar表示的日期中指定时间分量所对应的值
不同的时间分量用不同的整数表示,Calendar提供了大量的常量与之对应
Calendar calendar = Calendar.getInstance();
calendar.get(Calendar.YEAR); // 获取年
calendar.get(Calendar.MONTH)+1; // 获取月(是从0开始的)
calendar.get(Calendar.DAY_OF_MONTH); // DAY_OF_MONTH => 获取月中的天
// DAY_OF_WEEK => 获取周中的天(默认从周日开始)
// DAY_OF_YEAR => 获取年中的天
// DATE => 与DAY_OF_MONTH一样
calendar.get(Calendar.HOUR_OF_DAY); // 获取小时
calendar.get(Calendar.MINUTE); // 获取分钟
calendar.get(Calendar.SECOND); // 获取秒
calendar.getActualMaximum(field); // 获取指定时间分量允许的最大值
calendar.getActualMaximum(Calendar.DAY_OF_YEAR);// -> 查看一年中天数
void set(int field,int value)
调整当前Calendar指定时间分量为给定的值
会按照日历表中的时间变化
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR,2019); // -> 调整年为2019
void add(int field,int amount)
对指定的时间分量加上给定的值,若给定的值为负数则是减去。
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR,3); // -> 年上加上3
calendar.add(Calendar.MONTH,3); // -> 月上加上3
calendar.add(Calendar.DAY_OF_YEAR,3); // -> 年的天上加上3天