本文主要介绍几个Java中常用的日期时间相关的类,Date,DateFormat,Calendar
Date
Date类是Java中表示特定时间的类,精确到毫秒,有很多方法已经不再使用,下面仅介绍还在使用的几种方法:
构造方法
public Date() 根据当前的默认毫秒值创建日期对象
public Date(long date) 根据给定的毫秒值创建日期对象
成员方法
public long getTime() 获取时间,以毫秒为单位
public void setTime(long time)) 设置时间
获取的毫秒值是指从1970年上午8时到当前时间经过的毫秒数
DateFormat
DateFormat类概述:DateFormat 是日期/时间格式化子类的抽象类,
它以与语言无关的方式格式化并解析日期或时间y因为DateFormate是抽象类,所以可以使用该类的子类SimpleDateFormat 。
构造方法
public SimpleDateFormat()
public SimpleDateFormat(String pattern)
pattern指格式化和解析用的字符串格式,如yyyy-MM-dd HH:mm:ss
成员方法
public final String format(Date date)
public Date parse(String source)
解析: parse
文本内容(字符串 xml json html) --> 实体类 解析
格式化: format
实体类 --> 文本内容(字符串 xml json html)
/**
* 这是一个日期和字符串转换处理的一个日期工具类
* @author yjn
* @version 1.0
*/
public class DateUtils {
private DateUtils() {}
/**
* 这是将日期按照某种格式转换成字符串的方法
* @param date 需要格式化的日期
* @param pattern 日期字符串的模型
* @return 格式化后的字符串
*/
public static String dateToString(Date date, String pattern) {
return new SimpleDateFormat(pattern).format(date);
}
/**
* 这是将日期字符串按照某种格式转换成日期的方法
* @param dataStr 需要解析的日期字符串
* @param pattern 日期字符串的模型
* @return 解析后的日期对象
* @throws ParseException 抛出解析异常
*/
public static Date stringToDate(String dataStr, String pattern) throws ParseException {
return new SimpleDateFormat(pattern).parse(dataStr);
}
}
public class TestDateUtils {
public static void main(String[] args) throws ParseException {
String dateStr = DateUtils.dateToString(new Date(), "yyyy-MM-dd HH:mm:ss");
System.out.println(dateStr);
Date date = DateUtils.stringToDate("2019:04:25", "yyyy:MM:dd");
System.out.println(date);
}
}
Calendar
Calendar类概述:Calendar 类是一个抽象类,
它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,
并为操作日历字段(例如获得下星期的日期)提供了一些方法,瞬间可用毫秒值来表示。
成员方法
public static Calendar getInstance()
public int get(int field)
public void add(int field,int amount)
public final void set(int year,int month,int date)
public class CalendarDemo01 {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
System.out.println(c);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);
System.out.println(year + "年" + (month + 1) + "月" + day);
c.add(Calendar.YEAR, -3);
System.out.println(c);
int year2 = c.get(Calendar.YEAR);
int month2 = c.get(Calendar.MONTH);
int day2 = c.get(Calendar.DAY_OF_MONTH);
System.out.println(year2 + "年" + (month2 + 1) + "月" + day2);
c.add(Calendar.YEAR, 30);
int year3 = c.get(Calendar.YEAR);
int month3 = c.get(Calendar.MONTH);
int day3 = c.get(Calendar.DAY_OF_MONTH);
System.out.println(year3 + "年" + (month3 + 1) + "月" + day3);
c.set(5050, 5, 20, 12, 12, 12);
int year4 = c.get(Calendar.YEAR);
int month4 = c.get(Calendar.MONTH);
int day4 = c.get(Calendar.DAY_OF_MONTH);
System.out.println(year4 + "年" + (month4 + 1) + "月" + day4);
}
}