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

相关文章

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

C# LiteDB处理时间序列数据的高性能解决方案

《C#LiteDB处理时间序列数据的高性能解决方案》LiteDB作为.NET生态下的轻量级嵌入式NoSQL数据库,一直是时间序列处理的优选方案,本文将为大家大家简单介绍一下LiteDB处理时间序列数... 目录为什么选择LiteDB处理时间序列数据第一章:LiteDB时间序列数据模型设计1.1 核心设计原则