JavaSE(七)-时间处理

目录:

  •     java处理时间的API
  •     当前时间
  •     格式转换
  •     Calendar (直接取得年,月,日,时,分,秒)
  •     日期计算


正文:

    1.    java处理时间的API

java.util.Date 大部分函数已经deprecated

java.util.Calendar; 日期操作

java.text.SimpleDateFormat 格式化字符串

        java.time.* 在Java8新加入的包    


    2.    当前时间

long now = System.currentTimeMillis();

取得当前时间

返回自 1970-01-01 00:00:00.000 以来的毫秒数。(此时间点称为元点 Epoch ) 

两次调用相减获得两次调用时的时间差


Date d = new Date();

创建一个Date对象,初始值为当前时间

与long型互转

long t = d.getTime(); // Date -> 毫秒值 

d.setTime(t); // 毫秒值 -> Date

由于Date类的基本全部函数都是deprecated,可以认为该类基本没用了。。。还不如直接用一个long型

但有些第三方API接口仍然使用Date类。。。所以没有obsolete,只是deprecated 。


    3.    格式转换

Date <-> String
使用java.text.SimpleDateFormat

// 格式 2016-02-17 11:23:56
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
// Date -> String
Date now = new Date();
String strNow = fmt.format(now);
// String -> Date
Date when = fmt.parse("2012-03-12 11:00:24");


    4.    Calendar (直接取得年,月,日,时,分,秒)

Calendar类主要用于毫秒值与年月日时分秒之间的转换。
       Date  <->  年月日时分秒
比如,用long型整数记录了一个时间,但这个时间到底是哪一天。。。需要转成一个用户可读的“年月日时分秒”
再比如,已经年月日时分秒,如何转成一个毫秒值。。

// 创建Calendar对象, 初始值为当前时间(不能new, 必须使用它的静态方法)
Calendar cal = Calendar.getInstance();

// Date -> Calendar

Date d = new Date();

cal.setTime ( d );
// Calendar -> Date
Date d = cal.getTime();

取得年月日时分秒
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
int hour = cal.get(Calendar.HOUR_OF_DAY);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
注意,月份是从0开始的,当前是2016-2-17,则month的值为1 

设置年月日时分秒
cal.set(Calendar.YEAR, 2016);
cal.set(Calendar.MONTH, Calendar.FEBRUARY);
cal.set(Calendar.DAY_OF_MONTH, 17);
cal.set(Calendar.HOUR_OF_DAY, 11);
cal.set(Calendar.MINUTE, 45);
cal.set(Calendar.SECOND, 0);

注意,月份是从0开始的,当前是2016-2-17,则month的值为1 ( 可以使用枚举常量, Calendar.FEBRUARY )


    5.    日期计算

创建一个Calendar对象
Calendar cal = Calendar.getInstance();
// 22天之后, 返回一个22天后的日期
cal.add(Calendar.DAY_OF_MONTH, 22); 
// 6个月之前
cal.add(Calendar.MONTH, -6); 

Calendar类内部会计算闰年、月份这些信息

    总结:

            java.time.*包下还有其他的时间处理API, 但是一般情况下,上面列举出来的够用了.

            日常划水:    在家好无聊,   在更几期就更javaEE的内容.  

            每天早上都被自己菜醒, 我怎么可以这么菜呢.......


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值