android项目中有时候需要获取到当前的系统时间和日期
出于习惯,我们可能会这样
new Date(System.currentTimeMillis());
但是事实上,这样做之后,很可能跟实际上的时间相差十万八千里
其实还有一个常用的方法就是通过Calendar类
Calendar c = Calendar.getInstance();
new Date(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE));
Calendar.DATE 等同于 Calendar.DAY_OF_MONTH
date.getDay(); // 返回年日期
date.getMonth(); // 返回月日期
date.getDay(); // 返回日
// 但是,真的是这样吗
如果仔细看看文档的话,你会发现其实返回的是 the day of the week,就是星期内的天数
所以,想要获得day数据的话,需要用到
date.getDate(); // 返回the day of the month.
还有一个方法,就是android.text.format.Time
public static Time getCurrentTime() {
Time time = new Time();
time.setToNow();
Log.v(TAG, "cureent time: " + time.year + "-" + (time.month + 1) + "-" + time.monthDay
+ " " + time.hour + ":" + time.minute + ":" + time.second);
return time;
}
time.setToNow() 这句话就是拿到系统当前的时间,time里面包含了year,month,monthDay,yearDay,hours,miniute,seconds等所有常用的字段,非常方便
PS:有一点需要注意的就是,在java里面,不论是Calendar,Date还是Time,关于month这个字段的数据,如果不是手动设置的话,你会发现返回的数据总会比实际月份小1
我认为是,month这个数据反映的其实不是实际上几月份,而是当前月在一年中排到的第几个月,别忘了,java里索引是从0开始的哦