版权声明:本文为博主原创文章,未经博主允许不得转载,请尊重知识产权 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。 根据定义我们可以知道,这个值取得后不需要做任何变更就是程序需要的值。