Android - 时间管理

作者: 穿越平行宇宙 | 来源:发表于2019-07-15 07:41 被阅读0次

获取时间时需注意以下两点:

  1. 外国人把一月份整成了0,翻译成中国月份要加1
  2. 外国人把上周周日定为一周的开始,所以需要判断一下

一、获取当前时间并转换成相应的格式

1. 方式一:通过获取当前时间的毫秒值,定义指定的格式获取到当前时间

代码如下:

private static void getCurrentTime() {

        // 得到long类型当前时间
        long l = System.currentTimeMillis();
        // new日期对象
        Date date = new Date(l);
        // 转换的日期输出格式
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        String nyr = dateFormat.format(date);

        System.out.println("当前时间的毫秒值:"+l);
        System.out.println("当前时间:"+date);
        System.out.println(nyr);

        // 注意:"yyyy-MM-dd HH:mm:ss"这个根式不是固定的根据你的需要自己的调整;

}

输出结果:

当前时间的毫秒值:1563071971800
当前时间:Sun Jul 14 10:39:31 CST 2019
2019-07-14 10:39:31

2. 方式二:通过获取到Calendar(日历)的实例化,获取到当前时间,并转换成相应的格式

代码如下:

private static void getCurrentTime() {

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

        Calendar cal = Calendar.getInstance();

        System.out.println(cal.getTime());
        System.out.println("现在时间:" + simdf.format(cal.getTime()));

}

输出结果:

Sun Jul 14 10:33:34 CST 2019
现在时间:2019-07-14 10:33:34

二、分别获取当前时间的 年、月、日 和 日期

1. 方式一:通过获取Calendar(日历)的实例化

代码如下:

private static void getCurrentTime() {

        Calendar cal = Calendar.getInstance(Locale.CHINA);
        int day = cal.get(Calendar.DATE);
        int month = cal.get(Calendar.MONTH) + 1;
        int year = cal.get(Calendar.YEAR);
        int dow = cal.get(Calendar.DAY_OF_WEEK);
        int dom = cal.get(Calendar.DAY_OF_MONTH);
        int doy = cal.get(Calendar.DAY_OF_YEAR);

        // 因为外国人把上周周日定为一周的开始,所以需要判断一下
        if (dow > 1) {
            dow -= 1;
        } else {
            dow = 7;
        }

        System.out.println("当前时间:" + cal.getTime());
        System.out.println("年:" + year);
        System.out.println("月:" + month);
        System.out.println("日:" + day);
        System.out.println("星期:" + dow);
        System.out.println("当月的第几天:" + dom);
        System.out.println("当年的第几天:" + doy);
}

输出结果:

当前时间:Sun Jul 14 11:19:13 CST 2019
年:2019
月:7
日:14
星期:7
当月的第几天:14
当年的第几天:195

2. 方式二:通过获取当前时间的毫秒值

代码如下:

private static void getCurrentTime() {

        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date currTime = new Date();

        int year = currTime.getYear();//年

        int month = currTime.getMonth() + 1;//月

        int day = currTime.getDate();//日

        int week = currTime.getDay(); //星期几

        if (week == 0) {
            week = 7;
        }

        String curTime = formatter.format(currTime);

        System.out.println("当前时间:" + curTime);
        System.out.println("年:" + year);
        System.out.println("月:" + month);
        System.out.println("日:" + day);
        System.out.println("星期:" + week);

}

输出结果:

当前时间:2019-07-14 11:55:19
年:119
月:7
日:14
星期:7

三、其它

1. 获取当前月的天数

代码如下:

Calendar aCalendar = Calendar.getInstance(Locale.CHINA);
int day = aCalendar.getActualMaximum(Calendar.DATE);
System.out.println("当前月的天数:" + day);

2. 获取当前的季度

代码如下:

Calendar CAL = Calendar.getInstance(Locale.CHINA);
int month = CAL.get(Calendar.MONTH) + 1;

String quarter = "";

if (month >= 1 && month <= 3) {
     quarter = "1";
}
if (month >= 4 && month <= 6) {
     quarter = "2";
}
if (month >= 7 && month <= 9) {
     quarter = "3";
}
if (month >= 10 && month <= 12) {
     quarter = "4";
}

System.out.println("当前季度为:" + quarter);

3. 获取当前时间戳

代码如下:

// 方法 一
System.currentTimeMillis();
// 方法 二
Calendar.getInstance().getTimeInMillis();
// 方法 三
new Date().getTime();

获取时间戳三种方法执行效率比较:

public class TimeTest {
    private static long _TEN_THOUSAND=10000;
    public static void main(String[] args) {
        long times=1000*_TEN_THOUSAND;
        long t1=System.currentTimeMillis();
        testSystem(times);
        long t2=System.currentTimeMillis();
        System.out.println(t2-t1);
 
        testCalander(times);
        long t3=System.currentTimeMillis();
        System.out.println(t3-t2);
 
        testDate(times);
        long t4=System.currentTimeMillis();
        System.out.println(t4-t3);
    }
 
    public static void testSystem(long times){//use 188
        for(int i=0;i<times;i++){
            long currentTime=System.currentTimeMillis();
        }
    }
 
    public static void testCalander(long times){//use 6299
        for(int i=0;i<times;i++){
            long currentTime=Calendar.getInstance().getTimeInMillis();
        }
    }
 
    public static void testDate(long times){
        for(int i=0;i<times;i++){
            long currentTime=new Date().getTime();
        }
    }
 
}

结果如下:

Calendar.getInstance().getTimeInMillis() 这种方式速度最慢,这是因为Canlendar要处理时区问题会耗费较多的时间。

133
2372
137

相关文章

  • Android - 时间管理

    获取时间时需注意以下两点: 外国人把一月份整成了0,翻译成中国月份要加1 外国人把上周周日定为一周的开始,所以需要...

  • 005-番茄土豆体验小结

    体验软件:番茄土豆 Android(免费版) 产品定位: 番茄土豆是一款时间管理应用,主打功能是番茄时钟。核心功能...

  • 一贴在手,轻松搞定手机双系统日历同步

    Android手机与iPhone手机之间日历同步是困扰很多时间管理践行者的问题,这里至少要解决一下两个问题: 1....

  • 智能穿戴设备,让时间管理更轻松

    在穿戴设备逐渐普及化的今天,滴答清单也顺应潮流让大家在智能手表上也能玩转时间管理。继Android Wear和Ap...

  • 时间管理,怎么最有效呢?

    理有效时间管理的方法什么是时间管理有效时间管理的好处时间管理时间管理者时间管理最好的书如何进行时间管理 时间管理v...

  • OmniFocus 账号注册同步指南

    上一篇文章解决了iPhone和Android手机日历同步的问题,如果说日历是时间管理界的倚天剑,那屠龙刀非清单系统...

  • 工作中的时间管理

    什么是时间管理?为什么需要时间管理?时间管理的目的是什么? 时间管理是有效地运用时间,降低变动性。 时间管理...

  • Android目录集

    Android组件化Android面试Android MVP探索Android 性能优化Android measu...

  • 时间管理100讲学习笔记(持续更新)

    时间管理01 (20190429) 为什么要时间管理? 时间是我们最稀缺的资源,人人都需要时间管理。 时间管理的...

  • User-Agent汇总

    目录: Android:Android 0.*Android 1.*Android 2.*Android 3.*A...

网友评论

    本文标题:Android - 时间管理

    本文链接:https://www.haomeiwen.com/subject/cbqbkctx.html