Date
Date date = new Date();
System.out.println(date);//Tue Jul 30 13:20:18 CST 2019
/*
星期
Monday 星期一
Tuesday 星期二
Wednesday 星期三
Thursday 星期四
Friday 星期五
Saturday 星期六
Sunday 星期天
月份
January 一月
February 二月
March 三月
April 四月
May 五月
June 六月
July 七月
August 八月
September 九月
October 十月
November 十一月
December 十二月
*/
Date date1 = new Date();
Date date2 = new Date(0);
System.out.println(date1); //没传参数,代表当前时间
System.out.println(date2); //当参数时0,代表的也是1970/1/1 0:0:0,因为我们所在的时区时东八区,所以快了8小时
时间戳表示从1970-01-01 0:0:0 到现在的毫秒数
after(Date when)
判断指定日期是否在when之后
Date date = new Date();
Date date1 = new Date("2019/7/29");
System.out.println(date.after(date1));//true 判断date(date是当前时间)是否在date1之后
compareTo(Date date)
比较指定日期和date的时间戳的大小,大则返回1,小于返回-1,等于返回0
Date date = new Date();
Date date1 = new Date("2019/7/29");
System.out.println(date.compareTo(date1));//1
equals(Date date)
比较指定日期和date的时间戳的大小
Date date1 = new Date("2019/7/31 13:52:00");
Date date2 = new Date("2019/7/31 13:52:01");
System.out.println(date1.equals(date2));//false
getTime()
返回指定日期到1970年1月1号 0:0:0的毫秒数
Date date1 = new Date();
date1.setTime(1000);
System.out.println(date1.getTime());//1000
setTime(long l)
设置毫秒数l
Date date1 = new Date();
date1.setTime(1000);
System.out.println(date1);//Thu Jan 01 08:00:01 CST 1970
SimpleDateFormat
日期格式化:把Date里面包含的时间信息,按照指定格式打印出来
使用SimpleDateFormat构造方法格式化日期格式 “yyyy-MM-dd HH:mm:ss a”
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss a");
String format = sdf.format(date);
System.out.println(format);//2019-07-30 16:29:47 下午
parse(String str)
将日期字符串转换为日期对象
String str = "2000-1-1 00:00:00";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date date = sdf.parse(str);
System.out.println(date); //Sat Jan 01 00:00:00 CST 2000
} catch (ParseException e) {
e.printStackTrace();
}
Calendar
日历类:它是抽象类,不能直接实例化对象,要调用getInstance(locale alocale)
方法来获取使用默认时区和区域设置的日历。
时区参数:
-
-
Modifier and Type Field and Description static Locale
CANADA
国家有用常数。
static Locale
CANADA_FRENCH
国家有用常数。
static Locale
CHINA
国家有用常数。
static Locale
CHINESE
语言的有用常数。
static Locale
ENGLISH
语言的有用常数。
static Locale
FRANCE
国家有用常数。
static Locale
FRENCH
语言的有用常数。
static Locale
GERMAN
语言的有用常数。
static Locale
GERMANY
国家有用常数。
static Locale
ITALIAN
语言的有用常数。
static Locale
ITALY
国家有用常数。
static Locale
JAPAN
国家有用常数。
static Locale
JAPANESE
语言的有用常数。
static Locale
KOREA
国家有用常数。
static Locale
KOREAN
语言的有用常数。
static Locale
PRC
国家有用常数。
static char
PRIVATE_USE_EXTENSION
为私人使用扩展的关键(x)。
static Locale
ROOT
根区域设置的有用常量。
static Locale
SIMPLIFIED_CHINESE
语言的有用常数。
static Locale
TAIWAN
国家有用常数。
static Locale
TRADITIONAL_CHINESE
语言的有用常数。
static Locale
UK
国家有用常数。
static char
UNICODE_LOCALE_EXTENSION
对于Unicode区域延伸的关键(U)。
static Locale
US
国家有用常数。
-
用法实例
Calendar cal = Calendar.getInstance();
System.out.println(cal);
// 输出结果为:
java.util.GregorianCalendar[time=1564655982169,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=7,WEEK_OF_YEAR=31,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=213,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=6,HOUR_OF_DAY=18,MINUTE=39,SECOND=42,MILLISECOND=169,ZONE_OFFSET=28800000,DST_OFFSET=0]
getTime()
Calendar的getTime()方法返回的是Date日期,而Date的getTime()方法返回的是时间戳
Calendar cal = Calendar.getInstance();
Date cal_date = cal.getTime();
System.out.println(cal_date);//结果为Thu Aug 01 18:49:00 CST 2019
Date date = new Date();
long time = date.getTime();
System.out.println(time);//结果为1564656540241
add(int field,int amount)
添加或减去指定的时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd E");
System.out.println(sdf.format(new Date()));//当前时间2019-08-01 星期四
Calendar cal = Calendar.getInstance();
//星期-1
cal.add(Calendar.DAY_OF_WEEK, -1);
System.out.println(sdf.format(cal.getTime()));//星期-1后的时间:2019-07-31 星期三
//日期+1
cal.add(Calendar.DAY_OF_MONTH, 1);
System.out.println(sdf.format(cal.getTime()));//日期+1后的时间2019-08-01 星期四
//月份-1
cal.add(Calendar.MONTH, -1);
System.out.println(sdf.format(cal.getTime()));//月份-1后的时间2019-07-01 星期一
//年份+1
cal.add(Calendar.YEAR, 1);
System.out.println(sdf.format(cal.getTime()));//年份+1后的时间2020-07-01 星期三
get(int field)
返回指定的时间字段
//当前时间2019-08-01 星期四
int year = cal.get(Calendar.YEAR);//返回当前时间的年份
System.out.println(year);//结果为2019
int month = cal.get(Calendar.MONTH);//返回当前时间的月份,0代表1月份,1代表2月份,以此类推
System.out.println(month);//结果为7
int year_day = cal.get(Calendar.DAY_OF_YEAR);//返回当前时间是一年中的第几天
System.out.println(year_day);//结果为213
int month_day = cal.get(Calendar.DAY_OF_MONTH);//返回当前时间是本月的第几天
System.out.println(month_day);//结果为1
int week_day = cal.get(Calendar.DAY_OF_WEEK);//返回当前时间是一周的星期几,每周的第一天代表星期日,最后一天代表星期六
System.out.println(week_day);//结果为5
int am_pm = cal.get(Calendar.AM_PM);//返回当前时间是上午还是下午,0代表上午,1代表下午
System.out.println(am_pm);//结果为1
set(int field,,int amount)
set(int year,int month, int day)
设置到指定的时间字段
//当前时间2019-08-01 星期四
cal.set(cal.YEAR, 2000);
System.out.println(cal.get(cal.YEAR));// 结果为2000
cal.set(2000, 01, 01);
System.out.println(cal.get(cal.YEAR) + "年" + cal.get(cal.MONTH) + "月" + cal.get(cal.DAY_OF_MONTH));// 结果为2000年1月1