java日期类_Java基础——常用类之日期时间类

如果有机会,请尝试Java8中全新的时间日期API!(参见Java8新特性随笔)

如果还是使用Java7及之前的版本,那么你可以尝试一些工具类(参考使用工具类相关的Hutool-DateUtil)

如果又不能升级JDK,又无法引入第三方依赖库,那么你可以需要了解以下的时间日期相关的API(无奈之举)

一、常用日期类

ba6dd3ef1af513d82a733a5381b82f76.png

二、System类

我们比较常用的时间相关的方法:

14f641d482fc5acdb0a17927a19a1f6a.png

我们这里特别注意一下它的定义:返回的是与1970.1.1的时间差(单位:毫秒),由这个定义我们也容易知道它一般不单独使用(意义不大),

最常见的用途就是:计算时间差:

public static voidmain(String[] args) {long start =System.currentTimeMillis();for (int i = 0; i<100; i++) {if (i % 2 == 0) {

System.out.println("左青龙");

}else{

System.out.println("右白虎");

}

}long end =System.currentTimeMillis();

System.out.println("用时(ms):"+ (end -start));

}

三、Date类

1.构造方法(过时方法不再赘述)

2f5fb19f9aee290658cfba1995f232ac.png

实例化Date:(已重写toString())

public static void main(String[] args) {

// 通过构造器构建Date实例

Date date1 = new Date();

System.out.println(date1);// Thu Sep 14 20:32:16 CST 2017

}

//使用long型有参构造请带上后缀L(new Date(13807966980L))

2.常用方法(可以看到API中很多方法都已经过时)

getTime()——返回对应的毫秒数

public static void main(String[] args) {

// 通过构造器构建Date实例

Date date1 = new Date();

System.out.println(date1.getTime());// 1505392872857

}

四、SimpleDateFormat

由于Date类不利于国际化,已经由java.text包(实际上与格式化和解析的类基本都在此包下)下的SimpleDateFormat替代,

作为一个与语言环境有关的方式来格式化和解析日期的具体类

1.构造方法:

980cf5cebdf42cd700c8010467ddef00.png

也可以解析例如Sep等的英文缩写月份!

96c4b9992c5bcfda9c67622ae2776fd3.png

2.常用方法:(用于解析与格式化)

format(Date date)——格式化,将日期格式化为字符串

pattern格式详解可以参见API(常用:yyyy-MM-dd HH:mm:ss)

public static voidmain(String[] args) {

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");//格式化

String s = sdf.format(newDate());

System.out.println(s);//2017-09-14

}

parse(String str)——解析,将字符串解析为日期

public static voidmain(String[] args) {

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");//解析

try{

Date date= sdf.parse("2008-8-8");

System.out.println(date);//Fri Aug 08 00:00:00 CST 2008

} catch(ParseException e) {

e.printStackTrace();

}

}

五、Calendar

主要用于完成字段之间的相互操作的一个抽象基类

1.构造方法(由于是抽象类,无法直接new)

a86d40e4f9ead03a5a54c63029258503.png

2.常用方法

get(int field)——获取字段的方法

c3da61c3bbccb08da889a998975b3f3c.png

其中涉及的属性可以参见API的属性列表,其中的注意点:

MONTH月份从0开始,也就是1-12月对应 0-11,在Calender中有常量,如Calender.MAY等常量来表示!

DAY_OF_WEEK从1开始,也就是周日到周六对应 1-7

实例:

public static voidmain(String[] args) {

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Calendar c;//解析

try{

Date date= sdf.parse("2017-9-14 21:42:18");//使用Date作为参数初始化日历类

c =Calendar.getInstance();

c.setTime(date);//验证日历设置的时间是否生效

String s =sdf.format(c.getTime());

System.out.println(s);/*通过日历对日期进行字段的操作,获取年月日,操作年月日等*/

//显示年份

int year =c.get(Calendar.YEAR);

System.out.println("年份:"+year);//显示月份(从0开始)

int month =c.get(Calendar.MONTH);

System.out.println("月份:"+month);//周几(从周日(对应1)开始)

int weekDay =c.get(Calendar.DAY_OF_WEEK);

System.out.println("周几:"+weekDay);//本月第N天

int day =c.get(Calendar.DAY_OF_MONTH);

System.out.println("本月第几天:"+day);/*利用日历操作日期*/

//2小时后

c.add(Calendar.HOUR_OF_DAY, 2);int hour =c.get(Calendar.HOUR_OF_DAY);

System.out.println("2小时后:"+hour);//15分钟前

c.add(Calendar.MINUTE, -15);int min =c.get(Calendar.MINUTE);

System.out.println("15分钟前:"+min);//重置为当前时间

c.setTime(newDate());

Date now=c.getTime();

String s1=sdf.format(now);

System.out.println("当前时间:"+s1);

}catch(ParseException e) {

e.printStackTrace();

}

结果:

4b546a0262fc9be33293273783d7b949.png

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值