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

相关文章

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

go中的时间处理过程

《go中的时间处理过程》:本文主要介绍go中的时间处理过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 获取当前时间2 获取当前时间戳3 获取当前时间的字符串格式4 相互转化4.1 时间戳转时间字符串 (int64 > string)4.2 时间字符串转时间

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

MySQL 获取字符串长度及注意事项

《MySQL获取字符串长度及注意事项》本文通过实例代码给大家介绍MySQL获取字符串长度及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 获取字符串长度详解 核心长度函数对比⚠️ 六大关键注意事项1. 字符编码决定字节长度2