切记在所有日期类中,计算机所认同的月份是 0、1、2、3、4。---
对应的是 1月份,2月份、3月份、4月份、5月份
Date类
三种创建方式。
不带参
得到现在的时间
Date date = new Date();
System.out.println(date);
带参输入自己想要的年月日(注意。这里0是一月)
(这里的年,不是输入年份,而是输入,现在年份距离1900年的间距。)
例如,我想要设置为2008年。↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Date date1 = new Date(2008-1900,0,12); System.out.println(date1);
带参输入自己想要的年月日时分秒(注意。这里0是一月)
Date date2 = new Date(2008-1900,0,1,12,11,58); System.out.println(date2);
带参数 参数为字符串:
(字符串的话,必须输入指定格式的字符串。字符串没有那么讲究,年月日是多少就是多少)
Date date = new Date("1998,1,6");这个就代表 1998 年 1 月 6 日;
Date类的简单运用。计算两个日期间相差几天。
使用getTime()方法,计算出现在时间距离1970 年 1 月 1 日 00:00:00 的时间。。。:毫秒
两个时间 的毫秒相减。。。除以 24*60*60*1000 一天该有的毫秒数。
Date date = new Date(2008-1900,0,15); Date date1 = new Date(2008-1900,0,12); long subtract = (date.getTime()-date1.getTime())/(24*60*60*1000); System.out.println(subtract);
SimpleDateFormat类
用来格式化日期的
相当于构造一个日期模板
format()方法。将Date日期类返回城想要的字符串格式
原本。一个Date()得到了现在的时间。他得到的的属性是非常全的,包括时分秒。毫秒。。星期几。。等等
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
创建一个。年 - 月 - 日 (年、月、日 使用固定的单词,代表。'-'号等是随便写的)
Date date = new Date(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); String str =format.format(date); System.out.println(str);
使用设计好的模板。得到相应的字符串。
2018-02-21
换一个模板。
这次加上时分秒
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
运行
Date date = new Date(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String str =format.format(date); System.out.println(str);
运行结果为:2018-02-21 10:35:41
小技巧:使用固定的天数,获取当月的第一天
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-01");
Date date = new Date(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-01"); String str = format.format(date); System.out.println(str);
parse()方法。将固定格式的字符串转换成想要的Date格式。
与format相反的用法
String str ="2018-02-21 10:35:41"; SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { Date date = format.parse(str); System.out.println(date); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); }
使用固定的格式接受一个字符串里的时间参数。
字母 | 日期或时间元素 | 表示 | 示例 |
---|---|---|---|
G |
Era 标志符 | Text | AD |
y |
年 | Year | 1996 ; 96 |
M |
年中的月份 | Month | July ; Jul ; 07 |
w |
年中的周数 | Number | 27 |
W |
月份中的周数 | Number | 2 |
D |
年中的天数 | Number | 189 |
d |
月份中的天数 | Number | 10 |
F |
月份中的星期 | Number | 2 |
E |
星期中的天数 | Text | Tuesday ; Tue |
a |
Am/pm 标记 | Text | PM |
H |
一天中的小时数(0-23) | Number | 0 |
k |
一天中的小时数(1-24) | Number | 24 |
K |
am/pm 中的小时数(0-11) | Number | 0 |
h |
am/pm 中的小时数(1-12) | Number | 12 |
m |
小时中的分钟数 | Number | 30 |
s |
分钟中的秒数 | Number | 55 |
S |
毫秒数 | Number | 978 |
z |
时区 | General time zone | Pacific Standard Time ; PST ; GMT-08:00 |
Z |
时区 | RFC 822 time zone | -0800 |
Calendar类 ----日历类
Calendar类是一个抽象类。不能new 对象 ,使用固定的方法返回一个对象
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓获取现在的日期。使用相应的参数得到。年。月
想要获取 年、月、日、星期几、时、分、秒、...等等只要使用get()方法加上相应的参数即可
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.get(Calendar.YEAR));
System.out.println(calendar.get(Calendar.MONTH)+1);//月在计算机中是 0、1、2、3
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
我对于参数的理解。
YEAR = 年
MONTH =月
DAY _OF_ MONTH = 理解成一个月中的第几天。
DAY _OF_ YEAR= 理解成一年中的第几天。(按这个记忆方式。YEAY 中的第 DAY)
DAY_OF_WEEK = 一星期中的第几天。 星期中的第几天。周日是第一天
求今天星期几。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓Calendar calendar = Calendar.getInstance(); System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
如果今天是周日那么结果是 1,(周日是,一星期的第一天)
如果今天是周一那么结果是2.---------------------
使用Calendar设置时间
设置是使用set()方法。想要设置那个时间段,依次设置就行
设置年月日↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR,2018); calendar.set(Calendar.MONTH,1);///月份是 0、1、2、3、4、5、6... calendar.set(Calendar.DAY_OF_MONTH,21);
想要使用SimpleDateFormat类来 格式化成相应的字符串。
需要把 Calendar类转换成 Date
Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR,2018); calendar.set(Calendar.MONTH,1);///月份是 0、1、2、3、4、5、6... calendar.set(Calendar.DAY_OF_MONTH,21); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); System.out.println(format.format(calendar.getTime()));
添加时间add()
把现在的时间多少天或者多少小时。
Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR,2018); calendar.set(Calendar.MONTH,1);///月份是 0、1、2、3、4、5、6... calendar.set(Calendar.DAY_OF_MONTH,21);
比如我想知道某个日期100天后星期几
Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR,2018); calendar.set(Calendar.MONTH,1);///月份是 0、1、2、3、4、5、6... calendar.set(Calendar.DAY_OF_MONTH,21); //加上一百天。 calendar.add(Calendar.DAY_OF_MONTH,100); int week = calendar.get(Calendar.DAY_OF_WEEK)-1; System.out.println(week==0?7:week);↑↑↑↑↑↑↑↑↑↑↑负数是减去几天。
参数大全↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
字段摘要 | |
---|---|
static int |
ALL_STYLES 指示所有风格名称的 getDisplayNames 的风格说明符,比如 "January" 和 "Jan"。 |
static int |
AM 指示从午夜到中午之前这段时间的 AM_PM 字段值。 |
static int |
AM_PM get 和 set 的字段数字,指示 HOUR 是在中午之前还是在中午之后。 |
static int |
APRIL 指示在格里高利历和罗马儒略历中一年中第四个月的 MONTH 字段值。 |
protected boolean |
areFieldsSet 如果 fields[] 与当前的设置时间同步,则返回 true。 |
static int |
AUGUST 指示在格里高利历和罗马儒略历中一年中第八个月的 MONTH 字段值。 |
static int |
DATE get 和 set 的字段数字,指示一个月中的某天。 |
static int |
DAY_OF_MONTH get 和 set 的字段数字,指示一个月中的某天。 |
static int |
DAY_OF_WEEK get 和 set 的字段数字,指示一个星期中的某天。 |
static int |
DAY_OF_WEEK_IN_MONTH get 和 set 的字段数字,指示当前月中的第几个星期。 |
static int |
DAY_OF_YEAR get 和 set 的字段数字,指示当前年中的天数。 |
static int |
DECEMBER 指示在格里高利历和罗马儒略历中一年中第十二个月的 MONTH 字段值。 |
static int |
DST_OFFSET get 和 set 的字段数字,以毫秒为单位指示夏令时的偏移量。 |
static int |
ERA 指示年代的 get 和 set 的字段数字,比如罗马儒略历中的 AD 或 BC。 |
static int |
FEBRUARY 指示在格里高利历和罗马儒略历中一年中第二个月的 MONTH 字段值。 |
static int |
FIELD_COUNT get 和 set 可识别的不同字段的数量。 |
protected int[] |
fields 此日历当前设置时间的日历字段值。 |
static int |
FRIDAY 指示 Friday 的 DAY_OF_WEEK 字段值。 |
static int |
HOUR get 和 set 的字段数字,指示上午或下午的小时。 |
static int |
HOUR_OF_DAY get 和 set 的字段数字,指示一天中的小时。 |
protected boolean[] |
isSet 通知是否设置了该日历某一指定日历字段的标志。 |
protected boolean |
isTimeSet 如果 time 值是一个有效值,则返回 true。 |
static int |
JANUARY 指示在格里高利历和罗马儒略历中一年中第一个月的 MONTH 字段值。 |
static int |
JULY 指示在格里高利历和罗马儒略历中一年中第七个月的 MONTH 字段值。 |
static int |
JUNE 指示在格里高利历和罗马儒略历中一年中第六个月的 MONTH 字段值。 |
static int |
LONG 指示长名称的 getDisplayName 和 getDisplayNames 的风格说明符,比如 "January"。 |
static int |
MARCH 指示在格里高利历和罗马儒略历中一年中第三个月的 MONTH 字段值。 |
static int |
MAY 指示在格里高利历和罗马儒略历中一年中第五个月的 MONTH 字段值。 |
static int |
MILLISECOND get 和 set 的字段数字,指示一秒中的毫秒。 |
static int |
MINUTE get 和 set 的字段数字,指示一小时中的分钟。 |
static int |
MONDAY 指示 Monday 的 DAY_OF_WEEK 字段值。 |
static int |
MONTH 指示月份的 get 和 set 的字段数字。 |
static int |
NOVEMBER 指示在格里高利历和罗马儒略历中一年中第十一个月的 MONTH 字段值。 |
static int |
OCTOBER 指示在格里高利历和罗马儒略历中一年中第十个月的 MONTH 字段值。 |
static int |
PM 指示从中午到午夜之前这段时间的 AM_PM 字段值。 |
static int |
SATURDAY 指示 Saturday 的 DAY_OF_WEEK 字段值。 |
static int |
SECOND get 和 set 的字段数字,指示一分钟中的秒。 |
static int |
SEPTEMBER 指示在格里高利历和罗马儒略历中一年中第九个月的 MONTH 字段值。 |
static int |
SHORT 指示短名称的 getDisplayName 和 getDisplayNames 的风格说明符,比如 "Jan"。 |
static int |
SUNDAY 指示 Sunday 的 DAY_OF_WEEK 字段值。 |
static int |
THURSDAY 指示 Thursday 的 DAY_OF_WEEK 字段值。 |
protected long |
time 日历的当前设置时间,以毫秒为单位,表示自格林威治标准时间 1970 年 1月 1 日 0:00:00 后经过的时间。 |
static int |
TUESDAY 指示 Tuesday 的 DAY_OF_WEEK 字段值。 |
static int |
UNDECIMBER 指示一年中第十三个月的 MONTH 字段值。 |
static int |
WEDNESDAY 指示 Wednesday 的 DAY_OF_WEEK 字段值。 |
static int |
WEEK_OF_MONTH get 和 set 的字段数字,指示当前月中的星期数。 |
static int |
WEEK_OF_YEAR get 和 set 的字段数字,指示当前年中的星期数。 |
static int |
YEAR 指示年的 get 和 set 的字段数字。 |
static int |
ZONE_OFFSET get 和 set 的字段数字,以毫秒为单位指示距 GMT 的大致偏移量。 |