缘分的天空爱生活爱自己青春如歌

Android - 时间管理

2019-07-15  本文已影响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
上一篇 下一篇

猜你喜欢

热点阅读