Java Date 常用 API

一、Date

因为Date的设计具有"千年虫"以及"时区"的问题,所以Date中的大部分方法已经不建议使用了.

目前Date类只用其获取当前系统时间.


1.1 获取当前系统时间

(1) Date()

空参构造方法默认获取到当前时间.

Date now = new Date();
System.out.println(now);//Mon Nov 24 14:20:31 CST 2014

1.2 获取当前系统时间的毫秒值

(1) getTime()

该方法用于获取一个Date对象所表示的时间点,该返回值为一个long值.表示该时间点距离1970年1月1日 00:00:00之间的毫秒差.

System.out.println(now.getTime());//1416810087906
1.3 设置时间为自定义毫秒值

(1) setTime()

该方法用于为一个Date对象设置其需要表示的时间,该参数为一个long值,其含义是需要表示的这个时间点距离1970年1月1日 00:00:00之间的毫秒差.

System.out.println(now); //Mon Nov 24 14:29:42 CST 2014
long time = now.getTime();
time = time + 24*60*60*1000;
now.setTime(time);
System.out.println(now); //Tue Nov 25 14:29:42 CST 2014

二、SimpleDateFormat

SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类.它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。

简单的说,SimpleDateFormat就是根据一个特定的日期格式在字符串与Date之间相互转换.

SimpleDateFormat类位于java.text包中.

2.1 日期模式匹配字符串

字符含义示例
yyyyy年->2014年
MMM月->11月
ddd日->24日
E星期E -> 星期一
a上下午a -> 下午(PM)
H小时(24小时制)HH:mm:ss --> 14:53:11
h小时(12小时制)HH:mm:ss --> 14:53:11
mHH:mm:ss --> 14:53:11
sHH:mm:ss --> 14:53:11

2.2 将Date格式化为String

(1)format()

该方法用于将Date类型转换为String类型.

Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(now));//2014-11-24 15:35:43

2.3 将String解析为Date

(1)parse()

该方法用于将String类型转换为Date类型.

String str = "2008-08-08 08:08:08";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(str);
System.out.println(date);//Fri Aug 08 08:08:08 CST 2008

三、Calendar

Calendar是抽象类,java.util.Calendar 类用于封装日历信息,其主要作用在于其方法可以对时间分量进行运算.


3.1 实例化Calendar的对象

Calendar是抽象类,其提供了一个工厂方法:Calendar getInstance().该方法可以根据当前系统所在地区获取一个适当的Calendar的子类实现.
Calendar calendar = Calendar.getInstance();

3.2 设置日期及时间分量

(1) set()

该方法可以通过对不同的时间分量分别设置不同的值.

Calendar对不同的时间分量提供了相应的常量,我们在使用set方法设置时,第一个参数就应当使用对应的常量作为时间分量.

Calendar calendar = Calendar.getInstance();
//设置年为2008年
calendar.set(Calendar.YEAR,2008);
//设置月为5月
calendar.set(Calendar.MONTH,4);//月份从0开始
calendar.set(Calendar.MONTH,Calendar.MAY);//也可以使用常量来设置
//设置日为30日
calendar.set(Calendar.DAY_OF_MONTH,30);

3.3 获取时间分量对应的值

(1) get()

该方法可以通过对不同的时间分量获取相应的值.Calendar对不同的时间分量提供了相应的常量,我们在使用get方法获取时,参数就应当使用对应的常量作为时间分量.

Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int date = calendar.get(Calendar.DAY_OF_MONTH);
//需要注意,月份要加1,因为月份是从0开始的
System.out.println(year+"-"+(month+1)+"-"+date);//2014-11-24

3.4 获取给定时间分量所允许的最大值

(1) getActualMaximum()

该方法可以返回时间分量的最大值,可用于获取当月最后一天、当周最后一天等等.

Calendar calendar = Calendar.getInstance();
int max = calendar. getActualMaximum(Calendar.DAY_OF_MONTH);
//获取当月最后一天
System.out.println(max);//30

3.5 计算时间分量的值

(1) add()

该方法可以为某个时间分量的值加上给定的值,若想减去给定的值,那么传入的值需要时负数即可.并且计算后会自动进行相应的进位,例如若当前为月底,那么加一天后,为下个月的月初,而月就会进位.

Calendar calendar = Calendar.getInstance();
//计算明天(在日的基础上加一天)    
calendar.add(Calendar.DAY_OF_YEAR,1);

3.6 获取Date对象所表示的时间

(1) getTime()

该方法用于获取Date对象所表示的时间.

Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
System.out.println(date);// Mon Nov 24 15:59:31 CST 2014

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值