日期处理类
Date类
方法 | 类型 | 描述 |
---|---|---|
public Date() | 构造 | 实例化Date类对象 |
public Date(long date) | 构造 | 将数字变为Date 类对象,long 为日期时间数据 |
public long getTime() | 普通 | 将当前的日期时间变为long类型 |
取出当前时间:
Date date = new Date();
System.out.println(date);
Date与long 间的转换:
long currentTimeMillis = System.currentTimeMillis();
Date currentDate = new Date(currentTimeMillis);
System.out.println(currentDate);
System.out.println(currentDate.getTime());
日期格式化:SimpleDateFormat
方法 | 类型 | 描述 |
---|---|---|
public SimpleDateFormat(String pattern) | 构造 | 传入日期时间标记实例化对象 |
public final String format(Date date) | 普通 | 将日期格式化为字符串数据 |
public Date parse(String source) throws ParseException | 普通 | 将字符串格式化为日期数据 |
想要正常的完成格式化的操作,还需要准备出一些常用的日期时间标记:年(yyyy),月(MM),日(dd),时(HH),分(mm),秒(ss),毫秒(SSS).
将日期格式化显示(date 转化为 String 类型):
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String format = simpleDateFormat.format(date);
System.out.println(format);
执行结果:
2019-01-17 13:36:58.070
将字符串转化为日期:
try {
String riqi = "1997-08-22 12:12:12.666";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date parse = simpleDateFormat.parse(riqi);
System.out.println(parse);
} catch (ParseException e) {
e.printStackTrace();
}
执行结果:
Fri Aug 22 12:12:12 CST 1997
注意:SimpleDateFormat可以自动处理错误日期时间数。
例如:
try {
String riqi = "1997-08-58 37:12:12.666";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date parse = simpleDateFormat.parse(riqi);
System.out.println(parse);
} catch (ParseException e) {
e.printStackTrace();
}
执行结果:
Sun Sep 28 13:12:12 CST 1997
Calendar类
Calendar类可以将取得时间精确到毫秒,并且由于其可以分别取得日期时间数字,这样可以直接进行各种日期时间的计算操作。
Calendar类中定义的常量与方法:
方法 | 类型 | 描述 |
---|---|---|
public static final int YEAR | 常量 | 取得年 |
public static final int MONTH | 常量 | 取得月 |
public static final int DAY_OF_MONTH | 常量 | 取得日 |
public static final int HOUR_OF_DAY | 常量 | 取得小时(24小时制) |
public static final int MINUTE | 常量 | 取得分 |
public static final int SECOND | 常量 | 取得秒 |
public static final int MILLISECOND | 常量 | 取得毫秒 |
public static final Calendar getInstance() | 普通 | 根据默认的时区实例化对象 |
public boolean after(Object when) | 普通 | 判断一个日期是否在指定日期之后 |
public boolean before(Object when) | 普通 | 判断一个日期是否在指定日期之前 |
public int get(int field) | 普通 | 返回给定日历字段的值 |
取得当前日期时间:
Calendar instance = Calendar.getInstance();
int year = instance.get(Calendar.YEAR);
int month = instance.get(Calendar.MONTH)+1;//取得当前月份,从 0 开始
int day = instance.get(Calendar.DAY_OF_MONTH);
int hour = instance.get(Calendar.HOUR_OF_DAY);
int minute = instance.get(Calendar.MINUTE);
int second = instance.get(Calendar.SECOND);
String currentDate = year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
System.out.println(currentDate);
执行结果:
2019-1-20 20:26:9
补充:日期变化后,可以用 SimpleDateFormat格式化时间。
例如:
//取30天后的时间
day += 30;
String afterDate = year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
System.out.println(afterDate);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date parse = simpleDateFormat.parse(afterDate);
String format = simpleDateFormat.format(parse);
System.out.println(format);
执行结果:
2019-1-50 20:37:46
2019-02-19 08:37:46