Android系统时间制式的获取(24钟头制式/12小时制式)及UTC与本地时间的转换
2015-06-19 12:48
721 查看
Android系统时间制式的获取(24小时制式/12小时制式)及UTC与本地时间的转换
I、获取系统时间制式(12小时制/24小时制)
1、背景/使用场景
在有些软件中,可能需要展示一些时间信息,而这些信息可能是Server以UTC格式或Unix timestamp 格式推送过来的,终端可能需要将这些转换为本地时间展示。
而根据个人喜好,终端的制式可能是12小时制、也可能是24小时制的,为了软件的亲和度,就需要根据当前系统的时间的制式,动态转换制式,这样就需要获取系统当前设置的时间制式。
2、获取方式
3、如何转换为12小时制式/24小时制式的表示方式
HH:返回的是24小时制的时间
hh:返回的是12小时制的时间
II、时区
1、基本概念
时区 :
time zone 1884年国际经线会议规定,全球按经度分为24个时区,每区各占经度15°。
以本初子午线为中央经线的时区为零时区,由零时区向东、西各分12区,东、西12区都是半时区,共同使用180°经线的地方时。
CST :
China Standard Time UTC+8:00 中国标准时间(北京时间),在东八区。
UTC :
Universal Time Coordinated,世界协调时间,又称世界标准时间、世界统一时间。UTC 提供了一种与时区无关(或非特定于时区)的时间。
世界上的所有时区都可以表示为 UTC 加上或减去一个偏移量。
因此,UTC是0时区的时间,如北京为早上八点(东八区),UTC时间就为零点,时间比北京时晚八小时。
GMT :
Greenwich Mean Time格林威治标准时间,指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。
Unix timestamp :
Unix时间戳,或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,
定义为从格林威治时间(UTC/GMT的午夜)1970年01月01日00时00分00秒起至现在的总秒数。
可以这么说:
UTC和GMT几乎是同一概念,两者的区别是GMT是一个天文上的概念,UTC是基于原子钟。
GMT=UTC(精确滴说是:UTC = GMT +/- 0.9 s)
GMT + 8 = UTC + 8 = CST
UTC+时间差=本地时间 (时间差东为正,西为负,东八区记为 +0800)
2、UTC与GMT本地时区的转换
将Server传送的UTC时间,转换为指定时区的时间,示例代码如下。
如果转换为本地Local时间,则直接传本地时区即可。
本地时区的获取方法为TimeZone.getDefault()。
3、Unix timestamp与GMT的转换
详细可以参考
http://www.cnblogs.com/flying5/archive/2011/12/05/2276578.html#
参考网友资料:
http://blog.csdn.net/hgm770876501/article/details/8502364 http://blog.csdn.net/liu17ezlyy/article/details/8251731 http://www.cnblogs.com/flying5/archive/2011/12/05/2276578.html#
I、获取系统时间制式(12小时制/24小时制)
1、背景/使用场景
在有些软件中,可能需要展示一些时间信息,而这些信息可能是Server以UTC格式或Unix timestamp 格式推送过来的,终端可能需要将这些转换为本地时间展示。
而根据个人喜好,终端的制式可能是12小时制、也可能是24小时制的,为了软件的亲和度,就需要根据当前系统的时间的制式,动态转换制式,这样就需要获取系统当前设置的时间制式。
2、获取方式
ContentResolver cv = this.getContentResolver(); // 获取当前系统设置 String strTimeFormat = android.provider.Settings.System.getString(cv, android.provider.Settings.System.TIME_12_24); if(strTimeFormat.equals("24")) { Log.i("activity","当前是24制式"); } if(strTimeFormat.equals("12")) { Log.i("activity","当前是12制式"); }
3、如何转换为12小时制式/24小时制式的表示方式
String getTimestamp() { // 转换为24小时制式的字串 DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss sss"); Date date = new Date(); return df.format(date); }
HH:返回的是24小时制的时间
hh:返回的是12小时制的时间
II、时区
1、基本概念
时区 :
time zone 1884年国际经线会议规定,全球按经度分为24个时区,每区各占经度15°。
以本初子午线为中央经线的时区为零时区,由零时区向东、西各分12区,东、西12区都是半时区,共同使用180°经线的地方时。
CST :
China Standard Time UTC+8:00 中国标准时间(北京时间),在东八区。
UTC :
Universal Time Coordinated,世界协调时间,又称世界标准时间、世界统一时间。UTC 提供了一种与时区无关(或非特定于时区)的时间。
世界上的所有时区都可以表示为 UTC 加上或减去一个偏移量。
因此,UTC是0时区的时间,如北京为早上八点(东八区),UTC时间就为零点,时间比北京时晚八小时。
GMT :
Greenwich Mean Time格林威治标准时间,指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。
Unix timestamp :
Unix时间戳,或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,
定义为从格林威治时间(UTC/GMT的午夜)1970年01月01日00时00分00秒起至现在的总秒数。
可以这么说:
UTC和GMT几乎是同一概念,两者的区别是GMT是一个天文上的概念,UTC是基于原子钟。
GMT=UTC(精确滴说是:UTC = GMT +/- 0.9 s)
GMT + 8 = UTC + 8 = CST
UTC+时间差=本地时间 (时间差东为正,西为负,东八区记为 +0800)
2、UTC与GMT本地时区的转换
将Server传送的UTC时间,转换为指定时区的时间,示例代码如下。
如果转换为本地Local时间,则直接传本地时区即可。
本地时区的获取方法为TimeZone.getDefault()。
/* 将Server传送的UTC时间转换为指定时区的时间 */ public String converTime(String srcTime, TimeZone timezone) { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); SimpleDateFormat dspFmt = new SimpleDateFormat("yyyy-MM-dd HH:mm"); String convertTime; Date result_date; long result_time = 0; // 如果传入参数异常,使用本地时间 if (null == srcTime) { result_time = System.currentTimeMillis(); } else { // 将输入时间字串转换为UTC时间 try { sdf.setTimeZone(TimeZone.getTimeZone("GMT00:00")); result_date = sdf.parse(srcTime); result_time = result_date.getTime(); } catch (Exception e) { // 出现异常时,使用本地时间 result_time = System.currentTimeMillis(); dspFmt.setTimeZone(TimeZone.getDefault()); convertTime = dspFmt.format(result_time); return convertTime; } } // 设定时区 dspFmt.setTimeZone(timezone); convertTime = dspFmt.format(result_time); Log.e("current zone:", "id=" + sdf.getTimeZone().getID() + " name=" + sdf.getTimeZone().getDisplayName()); return convertTime; }
3、Unix timestamp与GMT的转换
详细可以参考
http://www.cnblogs.com/flying5/archive/2011/12/05/2276578.html#
参考网友资料:
http://blog.csdn.net/hgm770876501/article/details/8502364 http://blog.csdn.net/liu17ezlyy/article/details/8251731 http://www.cnblogs.com/flying5/archive/2011/12/05/2276578.html#
相关文章推荐
- 【PullToRefresh 系列基本用法】 Android装上拉下拉刷新控制具体的解释
- TabHost页和子Activity之间的通讯
- BitMap、Drawable、inputStream及byte[] 互转
- Android中获得上下文的静态方法
- [Android Studio 权威教程]AS构建系统-Gradle
- android隐藏以及显示软键盘以及不自动弹出键盘的方法
- android 还原短信
- android 根据uri获取真实路径
- android 根据uri获取路径
- android dp和px之间转换
- android Content Provider
- Android圆形进度条控件-CircleSeekBar
- AndroidManifest.xml——compatible-screen
- android数据库数据变化监听
- Android实现拨号器电话
- Android4.0以上 代码混淆
- actionbar--那些需要注意的事
- android 触摸屏 相关文章
- android 仿苹果pad左侧右滑退出界面
- Android 下拉刷新框架实现