Java 日期类的一些使用

/*2000年的1月1日,是那一年的第1天。
那么,2000年的5月4日,是那一年的第几天?*/

看到这道题 所以打算重新学习一下日期类 这也是我的第一篇博客

Date类现在用的比较少了,贴一些现在还没过时的方法

Date类表示特定的瞬间,精确到毫秒。

1、public Date()——分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。

1 @Test
2 public void test1() {
3     Date date = new Date();
4     System.out.println(date);
5 }
Sun Oct 23 22:39:14 CST 2016

2、public Date(long date)——根据给定的毫秒值创建日期对象。

1 @Test
2 public void test2() {
3     long time = System.currentTimeMillis();
4     Date date = new Date(time);
5     System.out.println(date);
6 }
Sun Oct 23 22:41:42 CST 2016

介绍完了Date的构造函数后,接下来来看看日期与毫秒值的相互转换

1、public long getTime()——日期转毫秒值

通过getTime方法可以将一个日期类型转换为long类型的毫秒值

1 @Test
2 public void test3() {
3     Date date = new Date();
4     System.out.println(date.getTime());
5 }
1477234414353

2、public void setTime(long time)——毫秒值转日期

 

1 @Test
2 public void test4() {
3     long time = System.currentTimeMillis();
4     Date date = new Date();
5     date.setTime(time);
6     System.out.println(date);
7 }
Sun Oct 23 22:53:05 CST 2016

当然也可以通过构造函数public Date(long date)将毫秒值转为日期类型。

通常我们会比较2个日期的大小,Date类提供以下方法用来比较2个日期的相关操作

1、public boolean before(Date when)——测试此日期是否在指定日期之前,当且仅当此Date对象表示的瞬间比when表示的瞬间早,才返回true;否则返回false。

1 @Test
2 public void test5() {
3     Date date1 = new Date(1000);
4     Date date2 = new Date(2000);
5     System.out.println(date1.before(date2));
6 }
true

2、public boolean after(Date when)——测试此日期是否在指定日期之后,当且仅当此Date对象表示的瞬间比when表示的瞬间晚,才返回true;否则返回false。

1 @Test
2 public void test6() {
3     Date date1 = new Date(1000);
4     Date date2 = new Date(2000);
5     System.out.println(date1.after(date2));
6 }
false

3、public int compareTo(Date anotherDate)——比较两个日期的顺序。

如果参数Date等于此Date,则返回值0;如果此Date在Date参数之前,则返回小于0的值;如果此Date在Date参数之后,则返回大于0的值。

1 @Test
2 public void test7() {
3     Date date1 = new Date(1000);
4     Date date2 = new Date(2000);
5     System.out.println(date1.compareTo(date2));
6 }
-1

Calendar类是现在关于日期常用的类了

要获取一个Calendar类的实例不能靠new 要调用静态的getInstance()方法

Calendar c = Calendar.getInstance();

常用set()方法可以直接设置一个时间 void set(int year, int month, int date, int hourOfDay, int minute, int second)

比如:c.set(2000,5,4); //需要注意的是 这里月份是5,但是在这个类的方法里月份是从0月开始算的,所以如果要表达2000.05.04就要设置成:c.set(2000,4,4);

同样的如果要获取这个月是第几个月则是调用get方法:c.get(Calendar.MONTH)+1  因为月份从0开始算, 所以要加一才能表示是5月

还有在该类的方法里周日是一个星期的第一天,周一是第二天以此类推

get()方法:形参是各种字段 没有MONTH DAY_OF_YEAR DAY_OF_MONTH等等

c.get(MONTH)//获取现在这个时间是这年的第几个月

同理DOY_OF_MONTH这个月第几天

getTime()方法:可以将Calendar类转换为Date类

Date date = c.getTime();

 

SimpleDateFormat类 简单的日期格式类

SimpleDateFormat format = new SimpleDateFormat(yyyy-MM-dd); //注意月份是大写  当然还有其他的一些格式 以后遇到了再补

可以将一个这种格式的的日期转化为Date类的一个实例

Date date = format.parse("2000-5-4");//这里要表达的是2000年5月4日

Date类也可以转换为Calendar类

Calendar c = Calendar.getInstance();

c.setTime(date);//这里等同于c.set(2000,4,4) 会自动转换成从0开始算的月份形式

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值