今天,简单讲讲android如何解决Date.gettimezoneoffset已经废弃的问题。
这个问题,我在网上搜索了资料,竟然没有找到替代的函数。其实Date已经过时,导致这些资料毕竟少。后来我看了android的源码,终于找到了替代函数。这里记录一下。
frameDate = new Date(); m_timezoneOffset = frameDate.getTimezoneOffset() * 60000; //计时时区的偏移时间
这个就是获取当前手机时区与标准时间的偏移时间(毫秒),这里可以看源码。
*/ @Deprecated public int getTimezoneOffset() { int zoneOffset; if (cdate == null) { // Android-changed: Android specific time zone logic GregorianCalendar cal = new GregorianCalendar(fastTime); zoneOffset = (cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET)); } else { normalize(); zoneOffset = cdate.getZoneOffset(); } return -zoneOffset/60000; // convert to minutes }
其实底层还是使用了Calendar的函数,使用Calendar获取当前时区的毫秒减去标准时间的毫秒,然后除以60000,就是编译的分钟。替代也很简单,直接使用Calendar就可以。
calendar = Calendar.getInstance(); m_timezoneOffset = -(calendar.get(Calendar.ZONE_OFFSET) + calendar.get(Calendar.DST_OFFSET));//计时时区的偏移时间(毫秒)
这个函数就没有过时的提示了。
android 解决Date.gettimezoneoffset已经废弃就讲完了。
就这么简单。