一种本地时间的获取方法及装置与流程

文档序号:26482576发布日期:2021-08-31 17:38阅读:76来源:国知局
一种本地时间的获取方法及装置与流程

本发明涉及计算机技术领域,更具体地说,涉及一种本地时间的获取方法及装置。



背景技术:

随着互联网的增长,互联网访问的数据量急剧增加,各种互联网服务的应用普及到日常生活中的各个方面,在大多数的网络服务的应用中,获取本地时间(localtime)是必不可少的操作,本地时间是计算机系统设置时区的当前时间。如何快速的获取本地时间,直接影响服务的性能与用户的体验。

传统获取本地时间的方式是通过系统应用程序接口(applicationprogramminginterface,api)获取协调世界时(coordinateduniversaltime,utc)时间,然后再通过api进行本地时间的转换来获取最终的本地时间。由于频繁的进行utc时间与本地时间的转换,从而降低了获取本地时间的效率。



技术实现要素:

有鉴于此,本发明提供了一种本地时间的获取方法及装置,以提高获取本地时间的效率。

为了实现上述目的,现提出的方案如下:

第一方面,本发明公开了一种本地时间的获取方法,所述方法包括:

获取实时utc时间和预存utc时间,其中,所述预存utc时间为上一次获取的实时utc时间;

将所述实时utc时间和所述预存utc时间进行对比计算,得到对比计算结果,并基于所述对比计算结果判断是否需要进行转换操作,若不需要,则获取当前时刻的本地时间。

优选的,获取预存utc时间的过程,包括:

存储获取到的当前实时utc时间的数值;

将上一次获取到的实时utc时间的数值确定为预存utc时间所对应的数值。

优选的,将所述实时utc时间和所述预存utc时间进行对比计算,得到对比计算结果,并基于所述对比计算结果判断是否需要进行转换操作,若不需要,则获取当前时刻的本地时间,包括:

计算所述预存utc时间和最小颗粒时间的和值,所述最小颗粒时间为衡量所述实时utc时间对应的数值与所述预存utc时间对应的数值之间差值的标准时间;

将所述实时utc时间与所述和值进行对比;

若所述实时utc时间大于等于所述和值,将所述实时utc时间转换为当前时刻的本地时间;

若所述实时utc时间小于所述和值,获取当前时刻的本地时间。

优选的,在将所述实时utc时间转换为当前时刻的本地时间之后,还包括:

将获取到的最近一次实时utc时间对应的数值进行存储;

基于所述最近一次实时utc时间对应的数值更新所述预存utc时间对应的数值。

优选的,还包括:

将获取到的最近一次本地时间对应的数值进行存储;

基于所述最近一次本地时间对应的数值更新当前时刻的本地时间对应的数值。

第二方面,本发明公开了一种本地时间的获取装置,所述装置包括:

获取单元,用于获取实时utc时间和预存utc时间,其中,所述预存utc时间为上一次获取的实时utc时间;

判断单元,用于将所述实时utc时间和所述预存utc时间进行对比计算,得到对比计算结果,并基于所述对比计算结果判断是否需要进行转换操作,若不需要,则获取当前时刻的本地时间。

优选的,获取预存utc时间的所述获取单元,包括:

存储模块,用于存储获取到的当前实时utc时间的数值;

确定模块,用于将上一次获取到的实时utc时间的数值确定为预存utc时间所对应的数值。

优选的,所述判断单元包括:

计算模块,用于计算所述预存utc时间和最小颗粒时间的和值,所述最小颗粒时间为衡量所述实时utc时间对应的数值与所述预存utc时间对应的数值之间差值的标准时间;

对比模块,用于将所述实时utc时间与所述和值进行对比;

转换模块,用于若所述实时utc时间大于等于所述和值,将所述实时utc时间转换为当前时刻的本地时间;

获取模块,用于若所述实时utc时间小于所述和值,获取当前时刻的本地时间。

优选的,还包括:

第一存储单元,用于将获取到的最近一次实时utc时间对应的数值进行存储;

第一更新单元,用于基于所述最近一次实时utc时间对应的数值更新所述预存utc时间对应的数值。

优选的,还包括:

第二存储单元,用于将获取到的最近一次本地时间对应的数值进行存储;

第二更新单元,用于基于所述最近一次本地时间对应的数值更新当前时刻的本地时间对应的数值。

经由上述技术方案可知,获取实时utc时间和预存utc时间,将实时utc时间和预存utc时间进行对比计算,得到对比计算结果,并基于对比计算结果判断是否需要进行转换操作,若不需要,获取当前时刻的本地时间。通过上述方案,将获取到的实时utc时间和预存utc时间进行对比计算,通过对比计算结果来决定是否需要计算新的本地时间以此减少实时utc时间与可见字符串的本地时间转换的次数,通过减少实时utc时间与可见字符串的本地时间转换的次数,提高获取本地时间的效率。此外,应用此方案可以在不改动服务器代码的前提下提高服务器软件获取本地时间的性能,进而提高服务器软件的服务性能。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例公开的传统方式获取本地时间与本发明获取本地时间的对比图;

图2为本发明实施例公开的一种本地时间的获取方法的流程示意图;

图3为本发明实施例公开的获取预存utc时间的过程的流程示意图;

图4为本发明实施例公开的基于对比计算结果判断是否需要进行转换操作的流程示意图;

图5为本发明实施例公开的一种本地时间的获取装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。

现有技术中,随着互联网的增长,互联网访问的数据量急剧增加,各种互联网服务的应用普及到日常生活中的各个方面,在大多数的网络服务的应用中,获取本地时间是必不可少的操作,本地时间是计算机系统设置时区的当前时间。如何快速的获取本地时间,直接影响服务的性能与用户的体验。

传统获取本地时间的方式是通过系统应用程序接口api获取协调世界时utc时间,然后再通过api进行本地时间的转换来获取最终的本地时间。由于频繁的进行utc时间与本地时间的转换,从而降低了获取本地时间的效率。

因此,本发明公开了一种本地时间的获取方法及装置,以提高获取本地时间的效率。

如图1所示,为传统方式获取本地时间与本发明获取本地时间的对比图。

需要说明的是,获取本地时间的传统方式为实线,本发明获取本地时间,即优化后获取本地时间为虚线。

横轴为获取本地时间次数,单位为w,纵轴为耗时毫秒数,单位为ms。

图1的横轴中获取本地时间次数为0、1000、2000、3000、4000、5000和6000。图1的纵轴中耗时毫秒数为0、20000、40000、60000、80000、100000、120000、140000、160000和180000。

基于图1可得到,在需要大量的获取本地时间的应用中,本发明获取的本地时间比传统方式的获取本地时间的效率高。

如图2所示,为本发明实施例公开的一种本地时间的获取方法的流程示意图,具体包括如下步骤:

s201:获取实时utc时间和预存utc时间。

其中,预存utc时间为上一次获取的实时utc时间。

需要说明的是,实时utc时间对应的数值大于预存utc时间对应的数值。

utc时间为协调世界时,又称世界统一时间、世界标准时间或国际协调时间。协调世界时是以原子时秒长为基础,在时刻上尽量接近于世界时的一种时间计量系统。中国大陆采用iso8601-1988的《数据元和交换格式信息交换日期和时间表示法》(gb/t7408-1994)称之为国际协调时间,代替原来的gb/t7408-1994;中国台湾采用cns7648的《资料元及交换格式–资讯交换–日期及时间的表示法》,称之为世界统一时间。

为了方便理解获取预存utc时间的过程,这里举例进行说明:

若实时utc时间为8时06分,上一次获取的实时utc时间8时05分,则预存utc时间为8时05分。

s202:将实时utc时间和预存utc时间进行对比计算,得到对比计算结果,并基于对比计算结果判断是否需要进行转换操作,若不需要,执行s204,若需要,执行s203。

在具体实现s202的过程中,通过将实时utc时间和预存utc时间进行最小颗粒时间对比计算,即,将实时utc时间与预存utc时间和最小颗粒时间之和进行对比,得到对比计算结果,并基于对比计算结果来决定是否把实时utc时间转换成当前时刻的本地时间。

需要说明的是,对比计算结果分为两种结果,一种结果是实时utc时间大于等于预存utc时间和最小颗粒时间之和。另一种结果是实时utc时间小于预存utc时间和最小颗粒时间之和。

当对比计算结果为实时utc时间大于等于预存utc时间和最小颗粒时间t之和时,将实时utc时间转换为当前时刻的本地时间。

当实时utc时间小于预存utc时间和最小颗粒时间t之和时,获取当前时刻的本地时间。

最小颗粒时间为衡量实时utc时间对应的数值与预存utc时间对应的数值之间差值的标准时间。

最小颗粒时间可以是以秒为单位,也可以是以毫秒为单位,具体的最小颗粒时间的设定本方明不做具体限定,根据实际情况进行设定。

为了方便理解上述s202中涉及的将实时utc时间和预存utc时间进行对比计算,得到对比计算结果,并基于对比计算结果判断是否需要进行转换操作的过程,这里举例进行说明:

当获取到的实时utc时间为9时07分,预存utc时间为9时05分时,若将最小颗粒时间设定为0.01分,则实时utc时间对应的值为9.07,预存utc时间对应的值为9.05,最小颗粒时间对应的值为0.01,预存utc时间对应的数值9.05与最小颗粒时间的值0.01之和为9.06,实时utc时间对应的数值9.07大于9.06,将实时utc时间对应的数值9.07转换为当前时刻的本地时间,即当前时刻的本地时间为9时07分。

当获取到的实时utc时间为8时05分,预存utc时间为8时04分,若将最小颗粒时间设定为0.1分,则实时utc时间对应的值为8.05,预存utc时间对应的数值为8.04,最小颗粒时间对应的数值为0.1,预存utc时间对应的数值8.04与最小颗粒时间的值0.1之和为8.14,实时utc时间对应的值8.05小于8.14,则获取当前时刻的本地时间。

s203:将实时utc时间转换为当前时刻的本地时间。

在具体实现s203的过程中,将实时utc时间转换成以字符串形式存在的本地时间。

需要说明的是,本地时间为计算机系统设置时区的当前时间。

为了方便理解上述s203中将实时utc时间转换成本地时间的过程,这里举例进行说明:

例如,将2020年1月30日的实时utc时间为10时20分转换成对应的以常见的字符串形式存在的本地时间2020.1.30.10:20。

s204:获取当前时刻的本地时间。

将获取到的实时utc时间和预存utc时间进行对比计算,来决定是否需要计算新的本地时间以此减少实时utc时间与可见字符串的本地时间转换的次数,通过减少实时utc时间与可见字符串的本地时间转换的次数,从而提高获取本地时间的效率。

本发明实施例中公开的一种本地时间的获取方法,通过获取实时utc时间和预存utc时间,将实时utc时间和预存utc时间进行对比计算,得到对比计算结果,并基于对比计算结果判断是否需要进行转换操作,若不需要,获取当前时刻的本地时间。通过上述方案,将获取到的实时utc时间和预存utc时间进行对比计算,通过对比计算结果来决定是否需要计算新的本地时间以此减少实时utc时间与可见字符串的本地时间转换的次数,通过减少实时utc时间与可见字符串的本地时间转换的次数,提高获取本地时间的效率。此外,应用此方案可以在不改动服务器代码的前提下提高服务器软件获取本地时间的性能,进而提高服务器软件的服务性能。

可选的,在将实时utc时间转换为当前时刻的本地时间之后,将获取到的最近一次实时utc时间对应的数值进行存储,基于最近一次实时utc时间对应的数值更新预存utc时间对应的数值。

需要说明的是,预存utc时间只能为数值。

更新预存utc时间的相关程序代码如下:

static__threadchar

local_time[len]

static__threadstructtimevalevt_timestamp_use。

为了方便理解上述更新预存utc时间的过程,这里举例进行说明:

例如,上一次获取到的实时utc时间为15时12分,最近一次获取到的实时utc时间为15时30分,将最近一次获取到的实时utc时间为15时30分对应的值数15:30更新预存utc时间,更新后的预存utc时间的数值为15:30,即15时30分。

在本发明实施例中,通过分别对预存utc时间进行赋值,从而实现动态更新预存utc时间的目的。

在上述s201的过程中涉及到获取预存utc时间的过程,如图3所示,具体包括如下步骤:

s301:存储获取到的当前实时utc时间的数值。

在具体实现s301的过程中,在程序的线程中利用static__thread变量存储获取到的当前实时utc时间的数值。

s302:将上一次获取到的实时utc时间的数值确定为预存utc时间所对应的数值。

在本发明实施例中,存储获取到的当前实时utc时间的数值,并将上一次获取实时utc时间的数值确定为预存utc时间所对应的数值,从而得到预存utc时间的目的。

在上述s202中涉及到将实时utc时间和预存utc时间进行对比计算,得到对比计算结果,并基于对比计算结果判断是否需要进行转换操作,若不需要,获取当前时刻的本地时间的过程,如图4所示,具体包括如下步骤:

s401:计算预存utc时间和最小颗粒时间的和值。

在具体实现s401的过程中,将预存utc时间和最小颗粒时间进行求和计算,得到预存utc时间和最小颗粒时间的和值。

其中,最小颗粒时间为衡量实时utc时间对应的数值与预存utc时间对应的数值之间差值的标准时间。

s402:将实时utc时间与和值进行对比,若实时utc时间大于等于和值,执行s403,若实时utc时间小于和值,执行s404。

s402中将实时utc时间与预存utc时间和最小颗粒时间之和进行对比的执行过程可参考上述s202的执行过程,此处不再进行赘述。

s403:将实时utc时间转换为当前时刻的本地时间。

s403的执行过程与上述s203的执行过程一致,可参考上述s203的执行过程,此处不再进行赘述。

s404:获取当前时刻的本地时间。

在本发明实施例中,通过获取实时utc时间和预存utc时间,将实时utc时间和预存utc时间进行对比计算,得到对比计算结果,并基于对比计算结果判断是否需要进行转换操作,若不需要,获取当前时刻的本地时间。通过上述方案,将获取到的实时utc时间和预存utc时间进行对比计算,通过对比计算结果来决定是否需要计算新的本地时间以此减少实时utc时间与可见字符串的本地时间转换的次数,通过减少实时utc时间与可见字符串的本地时间转换的次数,提高获取本地时间的效率。此外,应用此方案可以在不改动服务器代码的前提下提高服务器软件获取本地时间的性能,进而提高服务器软件的服务性能。

基于上述实施例中公开的一种本地时间的获取方法的流程示意图,本发明实施例还对应公开了一种本地时间的获取装置的结构示意图,如图5所示,该本地时间的获取装置主要包括:

获取单元501,用于获取实时utc时间和预存utc时间。

其中,预存utc时间为上一次获取的实时utc时间。

进一步的,获取单元501,包括:

存储模块,用于存储获取到的当前实时utc时间的数值。

确定模块,用于将上一次获取到的实时utc时间的数值确定为预存utc时间所对应的数值。

判断单元502,用于将实时utc时间和预存utc时间进行对比计算,得到对比计算结果,并基于对比计算结果判断是否需要进行转换操作,若不需要,则获取当前时刻的本地时间。

其中,本地时间是以字符串形式存在的utc时间。

进一步的,判断单元502,包括:

计算模块,用于计算预存utc时间和最小颗粒时间的和值。

其中,最小颗粒时间为衡量实时utc时间对应的数值与预存utc时间对应的数值之间差值的标准时间。

对比模块,用于将实时utc时间与和值进行对比。

转换模块,用于若实时utc时间大于等于和值,将实时utc时间转换为当前时刻的本地时间。

获取模块,用于若实时utc时间小于和值,获取当前时刻的本地时间。

可选的,还包括:

第一存储单元,用于将获取到的最近一次实时utc时间对应的数值进行存储。

第一更新单元,用于基于最近一次实时utc时间对应的数值更新预存utc时间对应的数值。

可选的,还包括:

第二存储单元,用于将获取到的最近一次本地时间对应的数值进行存储;

第二更新单元,用于基于最近一次本地时间对应的数值更新当前时刻的本地时间对应的数值。

本发明实施例公开的一种本地时间的获取装置,通过获取实时utc时间和预存utc时间,将实时utc时间和预存utc时间进行对比计算,得到对比计算结果,并基于对比计算结果判断是否需要进行转换操作,若不需要,获取当前时刻的本地时间。通过上述方案,将获取到的实时utc时间和预存utc时间进行对比计算,通过对比计算结果来决定是否需要计算新的本地时间以此减少实时utc时间与可见字符串的本地时间转换的次数,通过减少实时utc时间与可见字符串的本地时间转换的次数,提高获取本地时间的效率。此外,应用此方案可以在不改动服务器代码的前提下提高服务器软件获取本地时间的性能,进而提高服务器软件的服务性能。

对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本发明各实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。

本发明各实施例中的装置及终端中的模块和子模块可以根据实际需要进行合并、划分和删减。

本发明所提供的几个实施例中,应该理解到,所揭露的终端,装置和方法,可以通过其它的方式实现。例如,以上所描述的终端实施例仅仅是示意性的,例如,模块或子模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个子模块或模块可以结合或者可以集成到另一个模块,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的模块或子模块可以是或者也可以不是物理上分开的,作为模块或子模块的部件可以是或者也可以不是物理模块或子模块,即可以位于一个地方,或者也可以分布到多个网络模块或子模块上。可以根据实际的需要选择其中的部分或者全部模块或子模块来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能模块或子模块可以集成在一个处理模块中,也可以是各个模块或子模块单独物理存在,也可以两个或两个以上模块或子模块集成在一个模块中。上述集成的模块或子模块既可以采用硬件的形式实现,也可以采用软件功能模块或子模块的形式实现。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1