1.java.util.Date
在标准Java类库中包含一个Date类。它的对象表示一个特定的瞬间,精确到毫秒。
例如:
Date d = new Date();
System.out.println(d); //打印当前日期时间的字符串
System.out.println(d.getTime()); //返回距离1970-01-01 00:00:00 的毫秒数
运行结果:
Sun Feb 02 13:23:26 CST 2020
1580621006710
2.Calendar
Calendar 类是一个抽象类,它为特定瞬间与一组诸如:YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。Calendar替代了很多Date中的方法,所以Date中的类很多方法被标注为过时。
例如:
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);
System.out.println(calendar.get(Calendar.YEAR)); //返回年份
System.out.println(calendar.get(Calendar.MONTH)); //返回月份
System.out.println(calendar.get(Calendar.DATE)); //返回日期
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));//返回星期几
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//返回日期
System.out.println(calendar.get(Calendar.HOUR_OF_DAY));//返回小时
System.out.println(calendar.get(Calendar.MINUTE));//返回分钟
System.out.println(calendar.get(Calendar.SECOND));//返回秒
System.out.println(calendar.getTimeZone());//返回时区
运行结果:
java.util.GregorianCalendar[time=1580621483794,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2020,MONTH=1,WEEK_OF_YEAR=6,WEEK_OF_MONTH=2,DAY_OF_MONTH=2,DAY_OF_YEAR=33,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=1,HOUR_OF_DAY=13,MINUTE=31,SECOND=23,MILLISECOND=794,ZONE_OFFSET=28800000,DST_OFFSET=0]
2020
1
2
1
2
13
31
23
sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null]
3.日期时间的格式化
使用 SimpleDateFormat 类的 format(date) 方法来格式化时间。
例如:
Date date = new Date();
String strDateFormat = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
System.out.println(sdf.format(date));
strDateFormat = "yyyy年MM月dd日 HH:mm:ss";
sdf = new SimpleDateFormat(strDateFormat);
System.out.println(sdf.format(date));
运行结果:
2020-02-02 13:36:23
2020年02月02日 13:36:23
4.String转Date
SimpleDateFormat 的parse(String s)方法可以实现字符串转换为日期对象。 例如:
public static void main(String[] args) throws Exception {
String s = "2020-01-01";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d = sdf.parse(s);
System.out.println(d);
}
运行结果:
Wed Jan 01 00:00:00 CST 2020
小结:
1).java.util.Date可以用来生成一个当前的日期时间对象。要想获得该日期时间对象中更精确的信息比如:年份,月份,小时,分钟推荐使用java.util.Calendar类实现。
2).使用 SimpleDateFormat 类的 format(date) 方法来格式化时间。
3).SimpleDateFormat 的parse(String s)方法可以实现字符串转换为日期对象。