Calendar,Date,SimpleDateFormat的相互转化
android中的时间类Date是用来对时间进行处理的一个常用类,早期,可以通过设置Date date=new Date();中的参数对时间进行设置和修改。后来Date这个类更多的时候是标识一个时间的单位存在,不再对时间进行操作处理了,而替代它的更强大的一个类Calendar提供了更多的对于时间进行修改和操作的方法。现在我们就来看看他们之间的转化和调用。
首先我们看一下获取现在时间的方法,很简单Date date=new Date();
输出结果:Fri Aug 19 09:39:27 CST 2016
格式是计算机默认的时间格式,可以精确到毫秒值,但这里没有显示,通过Date的getTime();方法,可以获取当下距离1970年1月1日零时的毫秒值
输出结果:date.getTime()=1471570767065
通过SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd天 HH时mm分ss秒 E");具体的时间具体到什么情况更具需要而定,例如可以只要时分秒,也可以只要月和日等等,更是类型也没有具体的限定,只需要通过sdf.format(date);就可以完成,返回值为String类型
输出结果:2016年08月19天 09时39分27秒星期五
那么在来看看作为输出结构的String类型如何和Date进行相互转换呢,很简单,可以怎么来的咱就怎么回去,同样通过SimpleDateFormat的方法sdf.parse(String);可以将和sdf规定格式相同的String时间转换为Date类型。
好的,现在我们来看一下作为Date的替代者的Calendar,创建实例的方法:Calendar ca=Calendar.getInstance();
通过Calendar的getTime();方法,我们可以获得一个Date的返回值作为时间显示。反之我们可以将自己的Date数据通过setTime();方法转换为Calendar类型,然后通过Calendar类中的方法对时间进行具体的操作。
ca.set(int field, int value) - 是用来设置"年/月/日/小时/分钟/秒/微秒"等值,参数可以是一个,也可以是 多个。
例如:
set(int year, int month, int day, int hour, int minute, int second) ;
Calendar.Year Calendar.Month Calendar.Day of Month....
需要注意的是:
Calendar 的 month 从 0 开始,也就是全年 12 个月由 0 ~ 11 进行表示。
而 Calendar.DAY_OF_WEEK 定义和值如下:
Calendar.SUNDAY = 1
Calendar.MONDAY = 2
Calendar.TUESDAY = 3
Calendar.WEDNESDAY = 4
Calendar.THURSDAY = 5
Calendar.FRIDAY = 6
Calendar.SATURDAY = 7