标签:
Android日期操作中常用的三种方式:
1.Date
2.Calendar
3.Unix时间戳
1与2的在具体的日期计算上便利高,3计算上方便和灵活,效率高。利用SimpleDateFormat可以实现字符串与Date对象的相互转化。
Calendar是能够自动根据手机所设置的时区来调整时间戳的,也就是该时区真实的时间戳Calendar。
Date和SimpleDateFormat获得的时间戳则不考虑时区,而是获取标准的GMT时间戳。
TimeZone.getDefault().getRawOffset()可以获得手机时区与GMT的时间戳差
也就是说如果要将当前时间戳转化为标准时间戳的话可以使用以下代码
Calendar calendar = Calendar.getInstance();// 获取当前日历对象 long unixTime = calendar.getTimeInMillis();// 获取当前时区下日期时间对应的时间戳 long unixTimeGMT = unixTime - TimeZone.getDefault().getRawOffset();// 获取标准格林尼治时间下日期时间对应的时间戳
那么在实际开发过程中,使用标准时间戳,因为用户很有可能会有更改时区的操作出现,如果使用对应时区的时间戳,并且时间戳作为某种标记量存入了数据库,那么一旦时区发生改变,已存数据将会与当前时区设置产生问题;而使用标准时间戳则可以避免这一问题,因为通过程序可以很容易地将时间戳转化为标准时间戳,并且标准时间戳是固定的,这样就能保证即使在修改了时区的情况下,也能正确处理日期时间。
Android的文件有建议用Time代替Calendar。用Time对CPU的负荷会较小。在写Widget时特别重要。
//此处从结果来看似乎用的是手机实际时间 Time time = new Time(); // 获取当前时间 time.setToNow(); //获取时间的各个值 int year = time.year; //月份的范围是0~11 int month = time.month; int day = time.monthDay; int minute = time.minute; int hour = time.hour; int sec = time.second; Log.v("DateDemo", "当前时间为:" + year + "年 " + month + "月 " + day + "日 " + hour + "时 " + minute + "分 " + sec + "秒"); //将日期转化为特定格式 String timeStr = time.format("%Y %m %d %H %M %S"); Log.v("DateDemo",timeStr);
获取Android系统时间是24小时制还是12小时制
ContentResolver cv = this.getContentResolver(); String strTimeFormat = Settings.System.getString(cv, android.provider.Settings.System.TIME_12_24);
导入的包为android.provider.Settings
参考链接:
http://www.2cto.com/kf/201207/139551.html
http://blog.csdn.net/yudajun/article/details/7939552
标签:
原文地址:http://www.cnblogs.com/limaofuyuanzhang/p/4209626.html