目录:
- java处理时间的API
- 当前时间
- 格式转换
- Calendar (直接取得年,月,日,时,分,秒)
- 日期计算
正文:
1. java处理时间的API
java.util.Date 大部分函数已经deprecated
java.util.Calendar; 日期操作
java.text.SimpleDateFormat 格式化字符串
java.time.* 在Java8新加入的包
2. 当前时间
3. 格式转换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 。
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 (直接取得年,月,日,时,分,秒)
5. 日期计算Calendar类主要用于毫秒值与年月日时分秒之间的转换。
Date <-> 年月日时分秒
比如,用long型整数记录了一个时间,但这个时间到底是哪一天。。。需要转成一个用户可读的“年月日时分秒”
再比如,已经年月日时分秒,如何转成一个毫秒值。。
// 创建Calendar对象, 初始值为当前时间(不能new, 必须使用它的静态方法)
Calendar cal = Calendar.getInstance();// Date -> Calendar
// Calendar -> DateDate d = new Date(); cal.setTime ( d );
Date d = cal.getTime();
取得年月日时分秒
注意,月份是从0开始的,当前是2016-2-17,则month的值为1int 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);
设置年月日时分秒
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 )
创建一个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的内容.
每天早上都被自己菜醒, 我怎么可以这么菜呢.......