Android系统时间制式的获取(24小时制式/12小时制式)及UTC与本地时间的转换

2023-10-31 12:32

本文主要是介绍Android系统时间制式的获取(24小时制式/12小时制式)及UTC与本地时间的转换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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#

 

这篇关于Android系统时间制式的获取(24小时制式/12小时制式)及UTC与本地时间的转换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/315385

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

如何利用Java获取当天的开始和结束时间

《如何利用Java获取当天的开始和结束时间》:本文主要介绍如何使用Java8的LocalDate和LocalDateTime类获取指定日期的开始和结束时间,展示了如何通过这些类进行日期和时间的处... 目录前言1. Java日期时间API概述2. 获取当天的开始和结束时间代码解析运行结果3. 总结前言在J

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

Java数字转换工具类NumberUtil的使用

《Java数字转换工具类NumberUtil的使用》NumberUtil是一个功能强大的Java工具类,用于处理数字的各种操作,包括数值运算、格式化、随机数生成和数值判断,下面就来介绍一下Number... 目录一、NumberUtil类概述二、主要功能介绍1. 数值运算2. 格式化3. 数值判断4. 随机

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

java获取图片的大小、宽度、高度方式

《java获取图片的大小、宽度、高度方式》文章介绍了如何将File对象转换为MultipartFile对象的过程,并分享了个人经验,希望能为读者提供参考... 目China编程录Java获取图片的大小、宽度、高度File对象(该对象里面是图片)MultipartFile对象(该对象里面是图片)总结java获取图片

Java通过反射获取方法参数名的方式小结

《Java通过反射获取方法参数名的方式小结》这篇文章主要为大家详细介绍了Java如何通过反射获取方法参数名的方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、前言2、解决方式方式2.1: 添加编译参数配置 -parameters方式2.2: 使用Spring的内部工具类 -

Go Mongox轻松实现MongoDB的时间字段自动填充

《GoMongox轻松实现MongoDB的时间字段自动填充》这篇文章主要为大家详细介绍了Go语言如何使用mongox库,在插入和更新数据时自动填充时间字段,从而提升开发效率并减少重复代码,需要的可以... 目录前言时间字段填充规则Mongox 的安装使用 Mongox 进行插入操作使用 Mongox 进行更