一.DATE类
Date类中的大量方法都已经过时了,过时不代表不存在,依然可以使用,只不过不建议使用,官方建议我们使用Calendar类.
date类的简单使用
public class DateDemo {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date);//Mon Mar 30 18:13:26 CST 2020
// 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数
System.out.println(date.getTime());//1585563307686
//过时方法,但是可以使用
System.out.println(date.toLocaleString());//2020-3-30 18:14:13
}
}
二.DateFormat类
DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。将日期表示为 Date 对象,或者表示为从 GMT(格林尼治标准时间)1970 年 1 月 1 日 00:00:00 这一刻开始的毫秒数。
常用方法:
①format(Date date) 将一个 Date 格式化为日期/时间字符串。
②getInstance() 获取为日期和时间使用 SHORT 风格的默认日期/时间格式器。
③parse() 从给定字符串的开始解析文本,以生成一个日期。
public class DateFormatDemo {
public static void main(String[] args) throws ParseException {
Date date = new Date();
DateFormat df = DateFormat.getInstance();
String format = df.format(date);
System.out.println(format);//20-3-30 下午6:22默认的是短风格的日期格式
Date date1 = df.parse(format);
System.out.println(date1);//Mon Mar 30 18:29:00 CST 2020
df = DateFormat.getDateInstance(DateFormat.LONG);
String format1 = df.format(date);
System.out.println(format1);//2020年3月30日.选择风格
df = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);
String format2 = df.format(date);
System.out.println(format2);//2020年3月30日 下午06时26分07秒
}
}
三.SimpleDateFormat类
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的模式。但是,仍然建议通过 DateFormat 中的 getTimeInstance、getDateInstance 或 getDateTimeInstance 来创建日期-时间格式器。每一个这样的类方法都能够返回一个以默认格式模式初始化的日期/时间格式器。可以根据需要使用 applyPattern 方法来修改格式模式。
常用方法:
①applyPattern(String pattern) 将给定模式字符串应用于此日期格式。
public class SimpleDateFormatDemo {
public static void main(String[] args) throws ParseException {
Date date = new Date();
String pattern="yyyy-MM-dd";//指定风格
SimpleDateFormat sdf = new SimpleDateFormat();
sdf.applyPattern(pattern);//将给定模式字符串应用于此日期格式
String format = sdf.format(date);
System.out.println(format);//2020-03-30
Date date1 = sdf.parse(format);
System.out.println(date1);//Mon Mar 30 00:00:00 CST 2020
}
}
四.Calendar类
Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
public class CalendarDemo {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
//返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象
Date time = calendar.getTime();
System.out.println(time);//Mon Mar 30 18:43:52 CST 2020
//获取HOUR属性的值
int hour = calendar.get(Calendar.HOUR_OF_DAY);
System.out.println(hour);//18
}
}
五.小操作(需求:查询最近一周。。。的信息)
注意:月份需要+1
public class CalendarDemo {
public static void main(String[] args) {
// 需求:查询最近一周。。。的信息,如何表示最近这一周
Date current = new Date();
Date endTime = null;
Calendar c = Calendar.getInstance();
int month=c.get(Calendar.MONTH)+1;
c.setTime(current);
//把日增加一天,时分秒设置为0
c.set(Calendar.MONTH, month);
c.set(Calendar.DAY_OF_MONTH, 0);
c.set(Calendar.HOUR_OF_DAY,0);
c.set(Calendar.MINUTE,0);
c.set(Calendar.SECOND,0);
endTime = c.getTime();
c.add(Calendar.DAY_OF_MONTH, -7);
Date beginTime = c.getTime();
System.out.println("开始时间:"+beginTime.toLocaleString());//开始时间:2020-3-24 0:00:00
System.out.println("结束时间:"+endTime.toLocaleString());//结束时间:2020-3-31 0:00:00
}
}
六.Date工具类
public class DateUtils {
private static final Logger logger = LoggerFactory.getLogger(DateUtils.class);
/***
* Date类型转换成XMLGregorianCalendar类型
*
* @param date
* @return
*/
public static XMLGregorianCalendar convertToXMLGregorianCalendar(Date date) {
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(date);
XMLGregorianCalendar gc = null;
try {
gc = DatatypeFactory.newInstance().newXMLGregorianCalendar(cal);
} catch (Exception e) {
logger.error("Date类型转换成XMLGregorianCalendar类型出错:" + e);
}
return gc;
}
/***
* XMLGregorianCalendar类型转换成Date类型
*
* @param cal
* @return
* @throws Exception
*/
public static Date convertToDate(XMLGregorianCalendar cal) throws Exception {
GregorianCalendar ca = cal.toGregorianCalendar();
return ca.getTime();
}
/**
* String 转 Date
*
* @param str 日期字符串
* @param format 转换格式
* @return Date
*/
public static Date stringToDate(String str, String format) {
DateFormat dateFormat = new SimpleDateFormat(format);
Date date = null;
try {
date = dateFormat.parse(str);
} catch (ParseException e) {
logger.error("String类型 转 Date类型出错:" + e);
}
return date;
}
/**
* Date 转 String
* auther: shijing
* 2015年3月25日上午11:28:14
*
* @param date 日期
* @param format 转换格式
* @return
*/
public static String dateToString(Date date, String format) {
DateFormat dateFormat = new SimpleDateFormat(format);
String strDate = null;
try {
if (date != null) {
strDate = dateFormat.format(date);
}
} catch (Exception e) {
// TODO Auto-generated catch block
logger.error("Date类型 转 String类型出错:" + e);
}
return strDate;
}
/***
* 测试方法
*
* @param args
*/
public static void main(String[] args) {
XMLGregorianCalendar d = DateUtils
.convertToXMLGregorianCalendar(new Date());
// System.out.println(d.getDay());
XMLGregorianCalendar cal = null;
try {
cal = DatatypeFactory.newInstance().newXMLGregorianCalendar();
cal.setMonth(06);
cal.setYear(2010);
Date date = DateUtils.convertToDate(cal);
String format = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat formatter = new SimpleDateFormat(format);
// System.out.println(formatter.format(date));
Date d1 = DateUtils.stringToDate("2014/7/24 9:51:00", "yyyy/MM/dd hh:mm:ss");
XMLGregorianCalendar d2 = DateUtils.convertToXMLGregorianCalendar(d1);
// System.out.println(d2.toString());
String dateStr = DateUtils.dateToString(cal.toGregorianCalendar().getTime(), "yyyy-MM-dd HH:mm:ss");
// System.out.println("dateStr="+ dateStr);
} catch (Exception e) {
e.printStackTrace();
}
}
}