在java.util.concurrent开发包里面提供有一个TimeUnit类,这个类单独看它的描述是一个时间单元类。该类是一个枚举类,这也是juc开包里面唯一的一个枚举类。
public enum TimeUnit {}
这个类之中支持的时间颗粒度有:
TimeUnit.DAYS //天
TimeUnit.HOURS //小时
TimeUnit.MINUTES //分钟
TimeUnit.SECONDS //秒
TimeUnit.MILLISECONDS //毫秒
TimeUnit.NANOSECONDS //纳秒
常用的功能如下:
public class SleepDemo {
public static void main(String[] args) {
//=============================休眠传统的写法==========================
new Thread(() -> {
try {
Thread.sleep(5);
System.out.println("传统延时完成了");
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
//=============================休眠TimeUnit写法==========================
new Thread(() -> {
try {
TimeUnit.SECONDS.sleep(5);
System.out.println("TimeUnit延时完成了");
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
}
}
发现TimeUnit可以实现更加精确的时间处理操作。
在TimeUnit里面最为重要的特点是可以方便的进行各种时间单位的转换,它提供了一个convert()方法。
// sourceDuration long类型时间数字
// sourceUnit 目标的转换类型
public long convert(long sourceDuration,TimeUnit sourceUnit)
long time = TimeUnit.MILLISECONDS.convert(1, TimeUnit.HOURS);
System.out.println("1小时转为毫秒:"+time);
public class ConvertDemo {
public static void main(String[] args) {
long time = TimeUnit.MILLISECONDS.convert(1, TimeUnit.HOURS);
System.out.println("1小时转为毫秒:"+time);
//三天后的日期
long time2 = TimeUnit.MILLISECONDS.convert(3, TimeUnit.DAYS);
System.out.println("3天转为毫秒:" + time2);
long threeTime = System.currentTimeMillis() + time2; //当前时间的毫秒数+3天后的毫秒数
System.out.println("3天后的日期:" + new Date(threeTime));
System.out.println("3天后的日期:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(threeTime)));
}
}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_44075963/article/details/114047540
内容来源于网络,如有侵权,请联系作者删除!