JAVA 日期类简单使用

切记在所有日期类中,计算机所认同的月份是 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
          getset 的字段数字,指示 HOUR 是在中午之前还是在中午之后。
static int APRIL
          指示在格里高利历和罗马儒略历中一年中第四个月的 MONTH 字段值。
protected  boolean areFieldsSet
          如果 fields[] 与当前的设置时间同步,则返回 true。
static int AUGUST
          指示在格里高利历和罗马儒略历中一年中第八个月的 MONTH 字段值。
static int DATE
          getset 的字段数字,指示一个月中的某天。
static int DAY_OF_MONTH
          getset 的字段数字,指示一个月中的某天。
static int DAY_OF_WEEK
          getset 的字段数字,指示一个星期中的某天。
static int DAY_OF_WEEK_IN_MONTH
          getset 的字段数字,指示当前月中的第几个星期。
static int DAY_OF_YEAR
          getset 的字段数字,指示当前年中的天数。
static int DECEMBER
          指示在格里高利历和罗马儒略历中一年中第十二个月的 MONTH 字段值。
static int DST_OFFSET
          getset 的字段数字,以毫秒为单位指示夏令时的偏移量。
static int ERA
          指示年代的 getset 的字段数字,比如罗马儒略历中的 AD 或 BC。
static int FEBRUARY
          指示在格里高利历和罗马儒略历中一年中第二个月的 MONTH 字段值。
static int FIELD_COUNT
          getset 可识别的不同字段的数量。
protected  int[] fields
          此日历当前设置时间的日历字段值。
static int FRIDAY
          指示 Friday 的 DAY_OF_WEEK 字段值。
static int HOUR
          getset 的字段数字,指示上午或下午的小时。
static int HOUR_OF_DAY
          getset 的字段数字,指示一天中的小时。
protected  boolean[] isSet
          通知是否设置了该日历某一指定日历字段的标志。
protected  boolean isTimeSet
          如果 time 值是一个有效值,则返回 true。
static int JANUARY
          指示在格里高利历和罗马儒略历中一年中第一个月的 MONTH 字段值。
static int JULY
          指示在格里高利历和罗马儒略历中一年中第七个月的 MONTH 字段值。
static int JUNE
          指示在格里高利历和罗马儒略历中一年中第六个月的 MONTH 字段值。
static int LONG
          指示长名称的 getDisplayNamegetDisplayNames 的风格说明符,比如 "January"。
static int MARCH
          指示在格里高利历和罗马儒略历中一年中第三个月的 MONTH 字段值。
static int MAY
          指示在格里高利历和罗马儒略历中一年中第五个月的 MONTH 字段值。
static int MILLISECOND
          getset 的字段数字,指示一秒中的毫秒。
static int MINUTE
          getset 的字段数字,指示一小时中的分钟。
static int MONDAY
          指示 Monday 的 DAY_OF_WEEK 字段值。
static int MONTH
          指示月份的 getset 的字段数字。
static int NOVEMBER
          指示在格里高利历和罗马儒略历中一年中第十一个月的 MONTH 字段值。
static int OCTOBER
          指示在格里高利历和罗马儒略历中一年中第十个月的 MONTH 字段值。
static int PM
          指示从中午到午夜之前这段时间的 AM_PM 字段值。
static int SATURDAY
          指示 Saturday 的 DAY_OF_WEEK 字段值。
static int SECOND
          getset 的字段数字,指示一分钟中的秒。
static int SEPTEMBER
          指示在格里高利历和罗马儒略历中一年中第九个月的 MONTH 字段值。
static int SHORT
          指示短名称的 getDisplayNamegetDisplayNames 的风格说明符,比如 "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
          getset 的字段数字,指示当前月中的星期数。
static int WEEK_OF_YEAR
          getset 的字段数字,指示当前年中的星期数。
static int YEAR
          指示年的 getset 的字段数字。
static int ZONE_OFFSET
          getset 的字段数字,以毫秒为单位指示距 GMT 的大致偏移量。


猜你喜欢

转载自blog.csdn.net/SUNbrightness/article/details/79342023