`
quanminchaoren
  • 浏览: 922964 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android 之 日期时间 时区同步

阅读更多
系统设置--日期和时间--自动确定日期和时间:
智能机 提供2类日期和时间同步方式:
使用网络提供时间
使用GPS提供时间
以及”自动确定时区“的选项。
Android 之 时间和日期的自动同步
那就是说,我们可以通过如下3种方式自动设置我们的时间和日期:
  A、可以分别从SIM1和SIM2卡的无线通信网络(2G/3G/4G)获得
  B、通过WiFi连接到Internet网络获得
  C、透过本身自带的GPS模块接受GPS卫星信息获得
注:
    A方式需要打开SIM1或者SIM2卡的数据连接
    C方式需要安装GPS定位应用,且只有当GPS定位成功后才会生效。

下面我们来学习一些基本概念
GMT
    格林威治标准时间(Greenwich Mean Time)
    是指位于伦敦郊区的皇家格林尼治天文台的标准时间,本初子午线即是通过该点的经线。
UTC
    Universal TimeCoordinated 世界统一时间,世界标准时间,国际协调时间
    UTC是基于GMT, 由原子钟提供的更准确的同一时间。
Time zone
    时区,亦作 time belt。
    以英国格林威治天文台的本初子午线为基点,全球划分为24个时区,每区各占经度15°     以本初子午线为中央经线的时区为零时区,由零时区向东、西各分12区。
    最后的东、西12区都是半时区,共同使用180°经线的地方时。     每个时区的中央经线上的时间就是这个时区内统一采用的时间,称为区时,相邻两个时区的时间相差1小时。
Local time
    地方时, 本地时间。
    是以观测者子午线为参考点的时间标准, 反映当地的自然时间。
    中国把首都北京所在的东8区的时间作为全国统一的时间,称为北京时间。

其实,整个世界可以就使用GMT/UTC就够了,但是各地的日出日落的自然生活反映到时间上就不那么自然了:
    伦敦人假设8点钟吃早饭, 北京人吃早饭就是16点。
    时区的划分和本地时间的使用, 就很好的解决了这个问题。

从技术实现方面再来解释一下
通过网络同步时间,涉及到两个协议:NITZ和NTP。
    它们使用的条件不同,可以获取的信息也不一样;
    勾选这个功能后,手机首先会尝试NITZ方式,若获取时间失败,再会尝试使用NTP方式。

NITZ(network identity and time zone)
    NITZ是一种GSM/WCDMA基地台方式,必须插入SIM卡,且需要operator支持;
    可以提供时间和时区信息。
    中国大陆运营商基本是不支持的。(据说成都地区的中国联通支持NITZ,深圳联通却不支持。)

NTP(network time protocol)
    单纯通过网络(GPRS/EDGE/3G/HSPA/WiFi)获取时间,只提供时间信息,没有时区信息。
    NTP在无SIM卡或operator不支持NITZ时使用。
    因此在不支持NITZ的地区,自动获取时区功能实际上是无效的。
    它根据获取到的GMT时间,按照手机本身设置的时区信息,计算出本地时间,显示在设备上。    NTP还有一种缓存机制:当前成功获取的时间会保存下来,当用户下次开启自动更新时间功能时,会结合手机clock来进行时间更新。
    这也是没有任何网络时手机却能自动更新时间的原因。
此外,因为NTP是通过网络上的时间服务器获取时间,所以时间较长时间未同步时,可能是你手机访问的时间服务器连接有问题。

使用GPS提供的时间
    当GPS 定位成功后,会根据当前时区,将GPS UTC Time转化成对应时区的local time. 
    为了确保GPS能成功定位,请到室外GPS信号良好的空旷地(视野范围内无建筑物遮挡)进行测试。
分享到:
评论

相关推荐

    android-获取网络时间、获取特定时区时间、时间同步的方法

    在Android开发中,获取时间是常见的任务,包括获取网络时间、特定时区时间以及进行时间同步。以下将详细解析三个方法来实现这些功能。 方法一: 这种方法通过`SimpleDateFormat`和`TimeZone`类来获取时间,它设定...

    安卓天气日历时间选择倒计时相关-Android倒计时demo避免时间不准.rar

    然而,直接使用系统当前时间可能存在不准确的问题,因为Android设备可能会被用户手动调整时间或者受到网络同步的影响。为了确保倒计时的准确性,我们需要使用系统时钟的可靠来源,例如`System.currentTimeMillis()`...

    日期和时间设置

    在本篇文章中,我们将深入探讨如何在Android平台上管理和操作日期及时间设置,包括但不限于系统时区的设置、自动更新时间的获取与配置、日期格式的读取以及24小时制的判断与设置等方面的知识点。 ### 一、系统时区...

    android 时间戳

    在Android开发中,时间戳(Timestamp)是一种常用的数据类型,用于表示特定的日期和时间。时间戳通常以秒或毫秒为单位,自1970年1月1日(UTC/GMT的午夜)开始计算到现在的总秒数或毫秒数。在这个压缩包中,"Time...

    android日历demo

    1. **Android Calendar API**:Android系统提供了Calendar API,用于处理日期和时间。开发者可以通过此API创建、读取、更新和删除日历事件。在Demo中,可能包含了如何使用ContentResolver与CalendarContract类进行...

    状态栏显示当前时间及日期

    在这里,你可以选择时区、调整日期和时间格式,甚至同步网络时间以保持精确。同时,可以勾选“在任务栏上显示日期和时间”,确保状态栏始终显示这些信息。 对于macOS,设置路径为“系统偏好设置”>“日期与时间”。...

    Android 8.0 系统自带 DeskClock

    它可以显示多个城市的当前时间,便于用户了解不同时区的时间,避免因时差产生的沟通问题。 5. **用户界面与设计**:Android 8.0 版本的 DeskClock 在设计上遵循了 Material Design 指导原则,提供简洁明了的界面,...

    android Clock时钟源码.rar

    在Android系统中,Clock通常指的是系统UI中的时钟显示,包括桌面小部件、通知栏时间和设置中的日期与时间界面。它由多个组件和模块共同协作完成,涉及到系统服务、UI设计和时间同步等多个方面。 1. **系统服务**:...

    Android时间、地区联动选择器

    在Android开发中,时间与地区的联动选择器是一个常见的功能需求,尤其在用户输入个人信息或设置时区时。本文将深入探讨如何实现这样一个组件,并提供相关的技术细节和代码示例。 一、Android时间选择器 在Android...

    Android系统日历日程操作.rar

    以上知识点涵盖了Android系统日历日程管理的主要方面,无论是个人日程安排还是团队协作,都能帮助用户高效地管理时间。如果"Android系统日历日程操作"的压缩包中包含具体教程,用户可以通过学习这些知识来提升自己在...

    Android 8.0 系统自带 Calendar

    对于经常跨时区旅行的用户,Android 8.0日历支持多个时区的显示,方便查看和管理不同地区的时间。 9. **智能建议** Android 8.0的Calendar应用还具有智能建议功能,能根据用户的输入习惯和历史记录自动填充事件...

    Android应用源码之安卓PWP简洁大日历.zip

    Android提供了java.time包,可以处理日期、时间、时区等。开发者可能使用这些API来计算日期间隔、比较日期、格式化显示等。 4. **事件同步**:为了实现与系统日历的同步,应用可能使用CalendarContract类,通过...

    获取系统时间demo app

    在Android开发中,获取系统时间是一项基础且重要的任务,这对于创建日期相关的功能...通过这个简单的"获取系统时间demo app",初学者能够学习到Android日期时间处理的基本原理和实践,为后续的开发工作打下坚实的基础。

    verify-automatic-date-time-zone:Cordova插件以验证是否在Android和iOS中启用了自动日期,时间和时区

    验证是否将日期,时间和时区设置为与网络提供商自动同步。 安装 cordova plugin add verify-automatic-date-time-zone VerifyAutomaticDateTimeZone.isAutomaticChecked 返回一个布尔值,指示是否为日期,时间和...

    downloadFile_android_zip_

    例如,`system.properties`文件可能包含系统的日期和时间设置,而`/data/system/timezone.db`则存储了时区信息。在Android中,`SystemClock`类提供了获取和操作系统时间的方法,如uptimeMillis()、elapsedRealtime()...

    Timezone_Service:Android 应用程序使用服务获取所选城市的当前时间

    在Android开发中,有时我们需要获取用户所选城市或特定地区的当前时间,以便为用户提供更准确的时间信息。"Timezone_Service"项目就是针对这一需求而设计的,它利用Android的服务(Service)组件和Java语言实现了一...

    时钟 显示年月日 时间 分钟 秒

    本文将深入探讨与“时钟显示年月日时间分钟秒”相关的知识点,包括时间的表示方式、系统时钟、日期和时间API、时间同步技术以及在不同编程语言中的实现。 1. 时间的表示方式: - 本地时间:根据用户所在的地理位置...

    电信设备-带有时间日期自动校准功能的移动通信终端.zip

    时间日期的准确性和同步性对于移动通信设备至关重要。首先,正确的时间和日期不仅方便用户安排日程,而且对于设备的网络连接、应用服务、数据同步等功能来说都是必不可少的。例如,电子邮件客户端通常依赖设备的时间...

    选择开始时间结束时间日历

    3. **时间管理**:为了处理开始时间和结束时间,应用需要有效管理时间戳,考虑到不同的时区,可能需要用到国际化的日期和时间格式。 4. **事件冲突检测**:当用户尝试预订一个已占用的时间段时,日历应用需要能够...

    android clock

    - **系统时钟同步**:源码中会包含更新时间的逻辑,这通常涉及到 Android 的 `SystemClock` 类,用于获取系统时间并将其显示在界面上。 - **自动刷新机制**:为了确保时间的实时性,Android 程序会使用 Handler ...

Global site tag (gtag.js) - Google Analytics