在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

寫(xiě)國(guó)際化的嵌入式代碼,時(shí)間問(wèn)題如何處理?

大魚(yú)機(jī)器人 ? 來(lái)源:大魚(yú)機(jī)器人 ? 作者:大魚(yú)機(jī)器人 ? 2022-11-14 15:48 ? 次閱讀

寫(xiě)國(guó)際化的程序比較難處理的兩個(gè)問(wèn)題可能是:時(shí)間問(wèn)題編碼問(wèn)題

本篇文章來(lái)聊一聊時(shí)間問(wèn)題。

最近設(shè)備到了國(guó)外,時(shí)間不不準(zhǔn)了~

雜燴君一直在東八區(qū)寫(xiě)代碼,處理時(shí)間問(wèn)題時(shí),習(xí)慣性的把時(shí)區(qū)寫(xiě)死為東八區(qū),即設(shè)備的小時(shí)數(shù)總是基于GMT的小時(shí)數(shù)加上8個(gè)小時(shí)作為設(shè)備的小時(shí)數(shù)。

如果設(shè)備到了國(guó)外,設(shè)備的時(shí)間就不準(zhǔn)了,設(shè)備的小時(shí)數(shù)對(duì)不上當(dāng)?shù)氐男r(shí)數(shù)。我們的設(shè)備時(shí)間,是使用設(shè)備上GPS的授時(shí)時(shí)間給設(shè)備進(jìn)行時(shí)間校準(zhǔn)的。

設(shè)備從GPS拿到的時(shí)間數(shù)據(jù)只是UTC時(shí)間。所以,不同地區(qū)的時(shí)間,需要基于UTC時(shí)間+/-時(shí)區(qū),向西減小,向東增加。當(dāng)?shù)氐臅r(shí)區(qū),可以根據(jù)當(dāng)?shù)氐慕?jīng)度進(jìn)行計(jì)算,這個(gè)后面再說(shuō)。

下面我們先來(lái)了解一些概念:

GMT與UTC時(shí)間

GMT時(shí)間(Greenwich Mean Time,格林威治時(shí)間),之前作為全球時(shí)間的基準(zhǔn)參考時(shí)間。

UTC時(shí)間(Universal Time Coordinated, 世界標(biāo)準(zhǔn)時(shí)間或世界協(xié)調(diào)時(shí)間),以原子時(shí)秒長(zhǎng)為基礎(chǔ),在時(shí)刻上盡量接近于世界時(shí)的一種時(shí)間計(jì)量系統(tǒng)。UTC是基于標(biāo)準(zhǔn)的GMT提供的準(zhǔn)確時(shí)間。

UTC時(shí)間和GMT時(shí)間其實(shí)是同一個(gè)時(shí)間,只不過(guò)UTC時(shí)間用秒來(lái)表示。

1、獲取UTC時(shí)間

獲取UTC時(shí)間的接口

#include
time_ttime(time_t*tloc);

該接口返回1970-01-01 0000 +0000至今的秒數(shù)(UTC)。

使用例子:

#include
#include

time_tget_utc_time(void)
{
returntime(NULL);
}

intmain(intargc,char**argv)
{
time_tutc_time=get_utc_time();
printf("utc_time=%lds
",utc_time);

return0;
}

運(yùn)行結(jié)果:

ed8195b0-632a-11ed-8abf-dac502259ad0.png

2、獲取GMT時(shí)間

獲取GMT時(shí)間的接口:

#include
structtm*gmtime(consttime_t*timep);

該接口返回tm結(jié)構(gòu)的GMT時(shí)間(UTC時(shí)間)。

tm結(jié)構(gòu):

structtm
{
inttm_sec;/*Seconds(0-60)*/
inttm_min;/*Minutes(0-59)*/
inttm_hour;/*Hours(0-23)*/
inttm_mday;/*Dayofthemonth(1-31)*/
inttm_mon;/*Month(0-11)*/
inttm_year;/*Year-1900*/
inttm_wday;/*Dayoftheweek(0-6,Sunday=0)*/
inttm_yday;/*Dayintheyear(0-365,1Jan=0)*/
inttm_isdst;/*Daylightsavingtime*/
};

使用例子:

#include
#include

time_tget_utc_time(void)
{
returntime(NULL);
}

intmain(intargc,char**argv)
{
time_tutc_time=get_utc_time();
printf("utc_time=%lds
",utc_time);

structtm*gmt_tm=gmtime(&utc_time);
printf("gmttime=%.4d-%.2d-%.2d%.2d:%.2d:%.2d
",gmt_tm->tm_year+1900,
gmt_tm->tm_mon+1,
gmt_tm->tm_mday,
gmt_tm->tm_hour,
gmt_tm->tm_min,
gmt_tm->tm_sec);

return0;
}

運(yùn)行結(jié)果:

ed95b108-632a-11ed-8abf-dac502259ad0.png

時(shí)區(qū)

由于世界各國(guó)家與地區(qū)經(jīng)度不同,地方時(shí)區(qū)也有所不同,因此會(huì)劃分為不同的時(shí)區(qū)。

正式的時(shí)區(qū)劃分包括24個(gè)時(shí)區(qū),每一時(shí)區(qū)由一個(gè)英文字母表示。每隔經(jīng)度15°劃分一個(gè)時(shí)區(qū),有一個(gè)例外,每個(gè)時(shí)區(qū)有一條中央子午線。

1、時(shí)區(qū)劃分方法:

現(xiàn)今全球共分為24個(gè)時(shí)區(qū)。英國(guó)(格林尼治天文臺(tái)舊址)為中時(shí)區(qū)(零時(shí)區(qū))、東1—12區(qū),西1—12區(qū)。每個(gè)時(shí)區(qū)橫跨經(jīng)度15度,時(shí)間正好是1小時(shí)。最后的東、西第12區(qū)各跨經(jīng)度7.5度,以東、西經(jīng)180度為界。每個(gè)時(shí)區(qū)的中央經(jīng)線上的時(shí)間就是這個(gè)時(shí)區(qū)內(nèi)統(tǒng)一采用的時(shí)間,稱(chēng)為區(qū)時(shí),相鄰兩個(gè)時(shí)區(qū)的時(shí)間相差1小時(shí)。

2、經(jīng)度范圍:

eda9a8ac-632a-11ed-8abf-dac502259ad0.png

3、當(dāng)?shù)貢r(shí)區(qū)計(jì)算

需要用到的接口:

#include
structtm*localtime(consttime_t*timep);

計(jì)算當(dāng)?shù)貢r(shí)區(qū):

#include
#include

time_tget_utc_time(void)
{
returntime(NULL);
}

intmain(intargc,char**argv)
{
time_tutc_time=get_utc_time();
printf("utc_time=%lds
",utc_time);

structtm*gmt_tm=gmtime(&utc_time);
printf("gmttime=%.4d-%.2d-%.2d%.2d:%.2d:%.2d
",gmt_tm->tm_year+1900,
gmt_tm->tm_mon+1,
gmt_tm->tm_mday,
gmt_tm->tm_hour,
gmt_tm->tm_min,
gmt_tm->tm_sec);
intgmt_hour=gmt_tm->tm_hour;

structtm*local_tm=localtime(&utc_time);
printf("localtime=%.4d-%.2d-%.2d%.2d:%.2d:%.2d
",local_tm->tm_year+1900,
local_tm->tm_mon+1,
local_tm->tm_mday,
local_tm->tm_hour,
local_tm->tm_min,
local_tm->tm_sec);
intlocal_hour=local_tm->tm_hour;


intlocal_time_zone=local_hour-gmt_hour;
if(local_time_zone-12)
{
local_time_zone+=24;
}
elseif(local_time_zone>12)
{
local_time_zone-=24;
}else{}

printf("local_time_zone=%d
",local_time_zone);

return0;
}

我們當(dāng)前為北京時(shí)間:

edbdd0f2-632a-11ed-8abf-dac502259ad0.png

我們把Ubuntu時(shí)間日期里的地點(diǎn)改到其它國(guó)家:

edee3fe4-632a-11ed-8abf-dac502259ad0.pngeeab8a36-632a-11ed-8abf-dac502259ad0.png

CST 時(shí)間

CST (China Standard Time,中國(guó)標(biāo)準(zhǔn)時(shí)間)。

中國(guó)標(biāo)準(zhǔn)時(shí)間一般指北京時(shí)間。北京時(shí)間是中國(guó)采用國(guó)際時(shí)區(qū)東八時(shí)區(qū)的區(qū)時(shí)作為標(biāo)準(zhǔn)時(shí)間。而中國(guó)幅員遼闊,東西相跨5個(gè)時(shí)區(qū)(即東五區(qū)、東六區(qū)、東七區(qū)、東八區(qū)、東九區(qū)5個(gè)時(shí)區(qū))

“北京時(shí)間”適用于中國(guó)(大陸、港澳、臺(tái)灣)境內(nèi),但在大陸的新疆、西藏等地,政府機(jī)關(guān)、企事業(yè)單位作息時(shí)間和郵政通訊費(fèi)用優(yōu)惠分界點(diǎn)雖然用北京時(shí)間來(lái)表示,但也比其他各省延晚2小時(shí),使用UTC+6的情況更為普遍。

根據(jù)經(jīng)度計(jì)算時(shí)區(qū)

時(shí)區(qū)范圍是中央經(jīng)線的度數(shù)向左右分別減、加7.5度。用該地的經(jīng)度除以15度,當(dāng)余數(shù)小于7.5度時(shí),商數(shù)即為該地所在的時(shí)區(qū)數(shù),當(dāng)余數(shù)大于7.5度時(shí),商數(shù)加1即為該地所在的時(shí)區(qū)數(shù)。

#include
#include

intcalc_timezone(doublelongitude)
{
inttimezone=0;
intquotient=(int)(longitude/15);
doubleremainder=(longitude-quotient*15);
printf("quotient=%d,remainder=%lf
",quotient,remainder);

if(remainder<=?7.5)
{
timezone=quotient;
}
else
{
timezone=quotient+(quotient>=0?+1:-1);
}

returntimezone;
}

intmain(intargc,char**argv)
{
while(1)
{
doublelongitude=0.0;
printf("pleaseinputlongitude:");
scanf("%lf",&longitude);
printf("longitude=%lf
",longitude);
inttimezone=calc_timezone(longitude);
printf("timezone=%d
",timezone);
}

return0;
}

這其實(shí)也是百度百科上提供的思路:

eecbebfa-632a-11ed-8abf-dac502259ad0.png

這種方式至少可以計(jì)算得到時(shí)區(qū)中心線的時(shí)區(qū)數(shù),但是一些臨界情況可能會(huì)差1小時(shí)。在網(wǎng)絡(luò)上也沒(méi)有找到其它更好的解決方案。

設(shè)備的時(shí)間,如果只是作為一個(gè)顯示功能,影響可能不是很大,但是如果設(shè)備的時(shí)間來(lái)做其它事情,比如定時(shí)功能,定時(shí)多少點(diǎn)多少分做什么事情,影響就很大了。

對(duì)于我們的設(shè)備,定時(shí)功能使用手機(jī)APP來(lái)操作的,這時(shí)候能想到的比較好的方法就是每當(dāng)使用手機(jī)APP的時(shí)候,把手機(jī)APP的時(shí)間給設(shè)備時(shí)間進(jìn)行一次校準(zhǔn)。

大家是否有其它更好的解決方案,歡迎留言討論

如果覺(jué)得文章有幫助,麻煩幫忙轉(zhuǎn)發(fā),謝謝!

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5142

    文章

    19554

    瀏覽量

    315345
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4891

    瀏覽量

    70301
  • UTC
    UTC
    +關(guān)注

    關(guān)注

    1

    文章

    24

    瀏覽量

    14837
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    嵌入式去哪個(gè)城市好?

    大都市,上海擁有眾多跨國(guó)公司和高科技企業(yè),特別是在電子產(chǎn)業(yè)方面有著深厚的積累和廣泛的應(yīng)用。上海的科技公司涵蓋了從智能硬件到物聯(lián)網(wǎng)的各個(gè)領(lǐng)域,為嵌入式開(kāi)發(fā)人員提供了廣闊的職業(yè)發(fā)展空間。上海的國(guó)際化氛圍也
    發(fā)表于 04-02 10:12

    有方科技重磅亮相德國(guó)嵌入式

    德國(guó)紐倫堡時(shí)間3月11-13日, EmbeddedWorld 2025(德國(guó)嵌入式展)在紐倫堡國(guó)際展覽中心舉行,作為全球規(guī)模最大、專(zhuān)業(yè)性最強(qiáng)的嵌入式系統(tǒng)與物聯(lián)網(wǎng)技術(shù)展會(huì),其被譽(yù)為全球智
    的頭像 發(fā)表于 03-13 09:14 ?436次閱讀

    AMD EPYC嵌入式9005系列處理器發(fā)布

    AMD(超威,納斯達(dá)克股票代碼:AMD )今日宣布推出第五代 AMD EPYC(霄龍)嵌入式處理器,擴(kuò)展其 x86 嵌入式處理器產(chǎn)品組合。
    的頭像 發(fā)表于 03-12 17:08 ?804次閱讀

    嵌入式系統(tǒng)中的代碼優(yōu)化與壓縮技術(shù)

    與續(xù)航能力。 二、代碼優(yōu)化策略 算法優(yōu)化:這是最基礎(chǔ)且有效的優(yōu)化方式。在圖像處理嵌入式應(yīng)用中,傳統(tǒng)算法可能需要大量的計(jì)算資源和時(shí)間。采用更高效的邊緣檢測(cè)算法,如Canny算法的
    發(fā)表于 02-26 15:00

    如何提高嵌入式代碼質(zhì)量?

    有著明顯的區(qū)別,主要體現(xiàn)在以下幾個(gè)方面: 1. 資源受限:嵌入式系統(tǒng)通常具有有限的內(nèi)存和處理能力,因此代碼效率和內(nèi)存占用是關(guān)鍵考量因素。 2. 實(shí)時(shí)性要求:某些嵌入式系統(tǒng)需要實(shí)時(shí)響應(yīng),
    發(fā)表于 01-15 10:48

    嵌入式主板的概述與發(fā)展

    隨著科技的迅猛發(fā)展,嵌入式系統(tǒng)在現(xiàn)代電子產(chǎn)品中扮演著越來(lái)越重要的角色。嵌入式主板作為嵌入式系統(tǒng)的核心組件之一,承擔(dān)著控制、處理和通訊等多種功能。本文將對(duì)
    的頭像 發(fā)表于 01-13 16:30 ?695次閱讀
    <b class='flag-5'>嵌入式</b>主板的概述與發(fā)展

    ARM架構(gòu)嵌入式主板特點(diǎn)

    嵌入式主板可以理解為嵌入在設(shè)備中用于控制和數(shù)據(jù)處理的CPU板,也就是設(shè)備的“大腦”。當(dāng)主板嵌入到設(shè)備中,當(dāng)然對(duì)主板的體積和功耗會(huì)有更嚴(yán)格的要求(嵌入
    的頭像 發(fā)表于 12-31 16:03 ?914次閱讀
    ARM架構(gòu)<b class='flag-5'>嵌入式</b>主板特點(diǎn)

    新手怎么學(xué)嵌入式?

    。但面對(duì)這個(gè)復(fù)雜的領(lǐng)域,很多人可能會(huì)感到迷茫,不知從何處入手。別擔(dān)心,本文將為你提供一些入門(mén)學(xué)習(xí)嵌入式技術(shù)的建議。 新手入門(mén)學(xué)習(xí)嵌入式技術(shù)的途徑 1. 了解基礎(chǔ)知識(shí) 首先,要對(duì)嵌入式
    發(fā)表于 12-12 10:51

    【「嵌入式Hypervisor:架構(gòu)、原理與應(yīng)用」閱讀體驗(yàn)】+第三四章閱讀報(bào)告

    嵌入式Hypervisor的設(shè)計(jì)與實(shí)現(xiàn)技術(shù) 內(nèi)容概述 : 第三章主要探討了嵌入式Hypervisor的設(shè)計(jì)與實(shí)現(xiàn)技術(shù),包括其關(guān)鍵組件、資源管理機(jī)制、中斷與異常處理機(jī)制等。這一章詳細(xì)解析了嵌入
    發(fā)表于 10-09 18:29

    嵌入式Hypervisor:架構(gòu)、原理與應(yīng)用 閱讀體驗(yàn) +Hypervisor基礎(chǔ)概念

    解決嵌入式系統(tǒng)資源有限但應(yīng)用場(chǎng)景日益復(fù)雜的難題。單核處理器計(jì)算性能的提高和多核處理器的引入為嵌入式Hypervisor的發(fā)展提供了硬件基礎(chǔ)。與此同時(shí),
    的頭像 發(fā)表于 10-08 15:08 ?1244次閱讀
    <b class='flag-5'>嵌入式</b>Hypervisor:架構(gòu)、原理與應(yīng)用 閱讀體驗(yàn) +Hypervisor基礎(chǔ)概念

    嵌入式主板是什么意思?嵌入式主板全面解析

    嵌入式主板,通常被稱(chēng)為嵌入式系統(tǒng)的核心組件,是一種用于控制和數(shù)據(jù)處理的計(jì)算機(jī)硬件,其設(shè)計(jì)旨在嵌入特定設(shè)備中執(zhí)行專(zhuān)門(mén)任務(wù)。嵌入式主板如同是設(shè)備
    的頭像 發(fā)表于 09-30 10:05 ?1523次閱讀

    嵌入式系統(tǒng)的未來(lái)趨勢(shì)有哪些?

    (ML)技術(shù)的快速發(fā)展,嵌入式系統(tǒng)將更多地整合這些先進(jìn)技術(shù),以支持智能決策和自動(dòng)。在設(shè)備上直接運(yùn)行AI和ML模型,進(jìn)行圖像識(shí)別、自然語(yǔ)言處理、預(yù)測(cè)分析等任務(wù),將極大提升嵌入式系統(tǒng)的智
    發(fā)表于 09-12 15:42

    嵌入式linux開(kāi)發(fā)的基本步驟有哪些?

    之前,首先需要選擇合適的硬件平臺(tái)。硬件選擇需要考慮以下幾個(gè)方面: 1.1 處理嵌入式Linux開(kāi)發(fā)需要一個(gè)處理器,常見(jiàn)的處理器有ARM、MIPS、PowerPC等。選擇
    的頭像 發(fā)表于 09-02 09:11 ?1107次閱讀

    芯原出席2024上海國(guó)際嵌入式

    在科技飛速發(fā)展的今天,集成電路領(lǐng)域無(wú)疑是其中最引人注目的領(lǐng)域之一。6月12日至14日,備受矚目的2024上海國(guó)際嵌入式展(Embedded World China)在上海隆重舉行。此次展會(huì)集結(jié)了全球
    的頭像 發(fā)表于 06-20 10:56 ?789次閱讀

    現(xiàn)場(chǎng)直擊 | 飛凌嵌入式亮相2024上海國(guó)際嵌入式

    6月12日,2024上海國(guó)際嵌入式展(embedded world China 2024)在上海世博展覽館開(kāi)幕。飛凌嵌入式不僅展出了基于NXP、TI和瑞薩等國(guó)際廠商芯片打造的
    的頭像 發(fā)表于 06-13 14:13 ?1222次閱讀
    現(xiàn)場(chǎng)直擊 | 飛凌<b class='flag-5'>嵌入式</b>亮相2024上海<b class='flag-5'>國(guó)際</b><b class='flag-5'>嵌入式</b>展
    主站蜘蛛池模板: 青娱乐伊人 | 艹逼免费视频 | 免费中国jlzzjlzz在线播放 | 久久天天躁夜夜躁狠狠85台湾 | 日本最顶级丰满的aⅴ艳星 日本最好的免费影院 | 亚洲伊人久久大香线蕉结合 | 中文在线资源链接天堂 | 1024你懂的在线播放欧日韩 | 亚州 色 图 综合 | 久久精品免费在线观看 | 久久2017| 综合7799亚洲伊人爱爱网 | 色老成人精品视频在线观看 | 欧美四色 | 久久久久久久性潮 | 亚洲第一网站 | 婷婷丁香社区 | 色播五月激情五月 | 夜间免费视频 | 男人午夜网站 | 手机在线观看免费视频 | 爱操综合网 | 国产视频黄 | 欧美日韩高清性色生活片 | 成人午夜免费剧场 | 国产午夜精品一区二区理论影院 | 亚洲一区区 | 九九热re | 免费精品视频在线 | 人人公开免费超级碰碰碰视频 | 蕾丝视频成人★在线观看 | www.亚洲黄色 | 一区二区三区高清在线观看 | 五月婷婷六月激情 | 色偷偷91久久综合噜噜噜噜 | 天天狠天天透天干天天怕处 | 搜索黄色录像 | 女人张开腿双腿让男人桶 | 5151四虎永久在线精品免费 | 男人的j桶女人的j视频 | 新版bt天堂资源在线 |