Android-获取系统时间【Calender有坑】

版权声明:本文为博主原创文章,未经博主允许不得转载,请尊重知识产权 https://blog.csdn.net/yishichangan1/article/details/82968274

为了使用方便,偷懒写了个获取时间的函数使用20180101000000这种表达形式的

public static String getTime() {
        String year, month, day, hour, minute, second;
        Calendar calendar = Calendar.getInstance();
        year = "" + calendar.get(Calendar.YEAR);
        if (calendar.get(Calendar.MONTH) < 9) month = "0" + (calendar.get(Calendar.MONTH) + 1);
        else month = "" + (calendar.get(Calendar.MONTH)+1);
        if (calendar.get(Calendar.DAY_OF_MONTH) < 10)
            day = "0" + calendar.get(Calendar.DAY_OF_MONTH);
        else day = "" + calendar.get(Calendar.DAY_OF_MONTH);
        if (calendar.get(Calendar.HOUR_OF_DAY) < 10)
            hour = "0" + calendar.get(Calendar.HOUR_OF_DAY);
        else hour = "" + calendar.get(Calendar.HOUR_OF_DAY);
        if (calendar.get(Calendar.MINUTE) < 10) minute = "0" + calendar.get(Calendar.MINUTE);
        else minute = "" + calendar.get(Calendar.MINUTE);
        if (calendar.get(Calendar.SECOND) < 10) second = "0" + calendar.get(Calendar.SECOND);
        else second = "" + calendar.get(Calendar.SECOND);
        return year + month + day + hour + minute + second;
    }

坑就坑在之前获取月份的时候写成了10月以前用0+月份的表达形式

 if (calendar.get(Calendar.MONTH) < 10) month = "0" + (calendar.get(Calendar.MONTH) + 1);
        else month = "" + (calendar.get(Calendar.MONTH)+1);

没想到啊,Calendar.MONTH是从0开始的,没测试就打包了,搞了半天日期是错的。。。
以此为戒,要多测试。
总结一下Calender里面其他可能存在的问题
MONTH加1的原因:
public static final int MONTH 指示月份的 get 和 set 的字段数字。这是一个特定于日历的值。在格里高利历和罗马儒略历中一年中的第一个月是 JANUARY,它为 0;最后一个月取决于一年中的月份数。 简单来说,因为这个值的初始值是0,因此我们要用它来表示正确的月份时就需要加1。

WEEK减1的原因:
public static final int DAY_OF_WEEK get 和 set 的字段数字,指示一个星期中的某天。该字段可取的值为 SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY 和 SATURDAY 。我们知道DAY_OF_WEEK是获取当前日期是一周中的第几天,而一周从周日算起 。

定义day时不用变动的原因:
public static final int DATE get 和 set 的字段数字,指示一个月中的某天。它与 DAY_OF_MONTH 是同义词。一个月中第一天的值为 1。 根据定义我们可以知道,这个值取得后不需要做任何变更就是程序需要的值。

猜你喜欢

转载自blog.csdn.net/yishichangan1/article/details/82968274
今日推荐