日期和时间
-
Date类
Date() 分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
Date(long Date) 分配Date对象并初始化此对象,以表示自从标准基准时间(1970年1月1日00:00:00 GMT)以来的毫秒数。
注意:我们处于东八区,所以我们的基准时间为1970年1月1日8时0分0秒。
使用空参构造创建Date对象,此Date对象表示的是当前操作系统的时间
Date date=new Date();
System.out.println(date); 结果Sun Mar 24 16:42:43 CST 2019
使用有参构造创建一个Date对象,参数传递一个毫秒值
Date date=new Date(0L);
System.out.println(date); 结果Thu Jan 01 08:00:00 CST 1970
在Date中,有一个方法叫做getTime,可以获取到Date对象表示的毫秒值。
Date date=new Date();
long millis =date.getTime(); 获得的就是从1970年1月1日8时0分0秒开始到现在的毫秒值
还有一个方法叫setTime,可以设置毫秒值。
Date date=new Date();
date.setTime(10000000L); 表示从1970年1月1日8时0分0秒开始过了多少毫秒。 -
DateFormat类
由于DateFormat为抽象类,不能直接使用,所以要用的话,需要使用子类【SimpleDateFormat】
SimpleDateFormat的构造方法:
SimpleDateFormat(String pattern) 参数需要传递一个字符串,该字符串表示一个格式。例子如下:
要转成的格式: | 2019年03月25日 08时31分21秒 |
对应的格式: |yyyy年MM月dd日 HH时mm分ss秒|
(就是使用英语字母代替时间中的数字)
|y|年|
|M|月|
|d|日|
|H|时|
|m|分|
|s|秒|
2.1调用SimpleDateFormat中的String format(Date date)方法可以把参数Date对象转成一个字符串并返回。
例子:
(1)创建一个Date对象,表示当前系统时间
Date date =new Date();
(2)创建SimpleDateFormat对象,在构造方法中指定转换的格式
SimpleDateFormat sdf=new SimpleDateFormat(“yyyy年MM月dd日 HH时mm分ss秒”);
(3)调用SimpleDateFormat的format方法,将Date对象转成一个字符串
String str=sdf.format(date);
(4)然后输出str就是上面所定义的那个格式
System.out.println(str);
2.2调用SimpleDateFormat中的Date parse(String source)就可以将字符串转成一个Date对象并返回
例子:
(1)定义一个字符串表示时间
String str=“2019-03-25 08:55:31”;
(2)创建一个SimpleDateFormat对象,指定一个格式(这个格式必须和上面字符串格式相同)
SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd HH-mm-ss”);
(3) 调用SimpleDateFormat的Parse方法,将字符串转成一个Date对象
Date date=sdf.parse(Str);
(4)然后输出date就是默认的格式
System.out.println(date); -
Calendar类
Calendar叫做日历类,Calendar类中有更好的方法替换了Date类中的方法。
Calendar是一个抽象类,如果要用,需要使用它的子类。要通过Calendar的静态方法getInstance进行获取
Calendar获取日历对象的方法:
stetic Calendar getInstance(): 获取一个Calendar子类对象,并将该子类对象返回
例子:
Calendar c=Calendar.getInstance();
Systrem.out.println©; 输出的就是现在的时间瞬间(一大串东西)
3.1在Calendar中有一个方法叫做int get(int field)来获取日历对象中指定字段的值
例子:
获取日历对象中【年】这个字段的值
int year=c.get(Calendar.YEAR);
获取日历对象中【月】这个字段的值
int month =c.get(Calendar.MONTH)+1; 注意在Calendar中的月份是从0开始的,比生活中的月份少1.
获取日历对象中【日】这个字段的值
int day=c.get(Calendar.DATE);
3.2在Calendar中还有一个方法叫做void set(int field,int value)来给指定字段设置值
例子:
把年这个字段的值设置成2012
c.set(Calenmdar.YEAR,2012);
把月这个字段的值设置成10月
c.set(Calendar.MONTH,9);
3.3在Calendar中还有一个方法叫void add(int field,int amount)对指定字段的值进行计算
例子:
c.add(Calendar.MONTH,10); 表示给当前月份加10个月,如果为负数,就表示减去10个月。
3.4在Calendar中还有一个方法叫做Date getTime()将Calendar转成一个Date对象
例子:
Date date =c.getTime();
然后输出的就是Date的默认格式 -
System类
System类表示系统类
4.1static long currentTimeMillis()获取当前操作系统的时间(获取到的是毫秒值)
例子:
long millis=System.currentTimeMillis(); 获取到的时间就为从1970年1月1日8时0分0秒开始到现在的毫秒值
4.2System中还有一个方法叫做static void arraycopy(原数组,原数组的起始位置,目标数组,目标数组的起始位置,复制元素的个数)对数组进行复制
例子:
int[] a={1,2,3,4,5};
int[] b={6,7,8,9,10};
System.arraycopy(a,0,b,o,3);表示把a中123复制到b的678位置
System.out.println(a); 结果为 [1,2,3,4,5]
System.out.println(b); 结果为 [1,2,3,9,10]