成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

C/C++標(biāo)準(zhǔn)庫之如何轉(zhuǎn)換UTC時間到local本地時間-創(chuàng)新互聯(lián)

小編給大家分享一下C/C++標(biāo)準(zhǔn)庫之如何轉(zhuǎn)換UTC時間到local本地時間,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

站在用戶的角度思考問題,與客戶深入溝通,找到高青網(wǎng)站設(shè)計與高青網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋高青地區(qū)。

前言

UTC 時間DateTime.UtcNow 和 系統(tǒng)本地時間 DateTime.Now 相差8個時區(qū) ,美國本地時間和北京時間相差15個時區(qū): 美國,而一般使用UTC時間方便統(tǒng)一各地區(qū)時間差異。

場景

     1.如果有面向全球用戶的網(wǎng)站, 一般在存儲時間數(shù)據(jù)時存儲的是UTC格式的時間, 這樣時間是統(tǒng)一的, 并可以根據(jù)當(dāng)?shù)貢r區(qū)來進(jìn)行準(zhǔn)確的轉(zhuǎn)換.

     2.存儲本地時間的問題就在于如果換了時區(qū), 那么顯示的時間并不正確. 所以我們存儲時間時最好還是存儲UTC時間,便于正確的轉(zhuǎn)換.

說明

1.C/C++標(biāo)準(zhǔn)庫提供了標(biāo)準(zhǔn)函數(shù)可以轉(zhuǎn)換, 不需要借助Win32 API.

例子

// test_datetime_format.cpp : 定義控制臺應(yīng)用程序的入口點。
//

#include "stdafx.h"
#include <time.h>
#include <sstream>
#include <iostream>
#include <assert.h>

//2014-09-13T10:52:36Z
//2014-09-13 10:52:36
char* ConvertUtcToLocalTime(struct tm* t2,const char* date){

 struct tm t;
 memset(&t,0,sizeof(t));
 t.tm_year = atoi(date)-1900;
 t.tm_mon = atoi(date+5)-1;
 t.tm_mday = atoi(date+8);
 t.tm_hour = atoi(date+11);
 t.tm_min = atoi(date+14);
 t.tm_sec = atoi(date+17);

 time_t tt = _mkgmtime64(&t);
 if(tt != -1){
 if(t2 == NULL){
  t2 = &t; 
 }
 *t2 = *localtime(&tt);
 char* ds = (char*) malloc(24);
 memset(ds, 0, 24);
 sprintf(ds, "%.4d-%.2d-%.2d %.2d:%.2d:%.2d", t2->tm_year + 1900,
  t2->tm_mon + 1, t2->tm_mday, t2->tm_hour, t2->tm_min,
  t2->tm_sec);
 return ds;
 }
 return NULL;
}


//https://www.w3.org/TR/NOTE-datetime
//https://msdn.microsoft.com/en-us/library/2093ets1.aspx
//2014-09-13T10:52:36Z
int _tmain(int argc, _TCHAR* argv[])
{
 const char* kTime = "2014-09-13 18:52:36";
 std::cout << "Source DateTime: " << "2014-09-13T10:52:36Z" << std::endl;
 auto t = ConvertUtcToLocalTime(NULL,"2014-09-13T10:52:36Z");
 std::cout << "Dest DateTime: " << t << std::endl;
 assert(!strcmp(t,kTime));

 t = ConvertUtcToLocalTime(NULL,"2014-09-13 10:52:36");
 std::cout << t << std::endl;
 assert(!strcmp(t,kTime));

 struct tm tt;
 t = ConvertUtcToLocalTime(&tt,"2014-09-13 10:52:36");
 std::cout << t << std::endl;
 assert(!strcmp(t,kTime));
 assert(tt.tm_year == (2014-1900));
 assert(tt.tm_mon == 9-1);
 assert(tt.tm_mday == 13);
 assert(tt.tm_hour == 18);
 assert(tt.tm_min == 52);
 assert(tt.tm_sec == 36);

 return 0;
}


}

輸出

Source DateTime: 2014-09-13T10:52:36Z
Dest DateTime: 2014-09-13 18:52:36
2014-09-13 18:52:36
2014-09-13 18:52:36

C++中獲取UTC時間精確到微秒的實現(xiàn)代碼

在日常開發(fā)過程中經(jīng)常會使用到時間類函數(shù)的統(tǒng)計,其中獲取1970年至今的UTC時間是比較常使用的,但是在windows下沒有直接能夠精確到微妙級的函數(shù)可用。本文提供方法正好可以解決這類需求問題。

下面先給出C++實現(xiàn)代碼:

代碼如下:

#ifndef UTC_TIME_STAMP_H_
#define UTC_TIME_STAMP_H_

#include <windows.h>
#include <sys/timeb.h>
#include <time.h> 

#if !defined(_WINSOCK2API_) && !defined(_WINSOCKAPI_)
struct timeval
{
long tv_sec;
long tv_usec;
};
#endif

static int gettimeofday(struct timeval* tv)
{
 union {
    long long ns100;
    FILETIME ft;
 } now;
 GetSystemTimeAsFileTime (&now.ft);
 tv->tv_usec = (long) ((now.ns100 / 10LL) % 1000000LL);
 tv->tv_sec = (long) ((now.ns100 - 116444736000000000LL) / 10000000LL);

 return (0);
}
//獲取1970年至今UTC的微妙數(shù)
static time_t TimeConversion::GetUtcCaressing()
{
 timeval tv;
 gettimeofday(&tv); 
 return ((time_t)tv.tv_sec*(time_t)1000000+tv.tv_usec);
}
#endif

接下來給出使用方法:

timeval tv;
gettimeofday(&tv);

或者直接調(diào)用:GetUtcCaressing();

UTC時間秒級UTC獲取方法代碼:

time_t timep;
struct tm *p;
time(&timep);
p=localtime(&timep);
timep = mktime(p);
printf("%d\n",timep);

以上是“C/C++標(biāo)準(zhǔn)庫之如何轉(zhuǎn)換UTC時間到local本地時間”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站jinyejixie.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)頁題目:C/C++標(biāo)準(zhǔn)庫之如何轉(zhuǎn)換UTC時間到local本地時間-創(chuàng)新互聯(lián)
當(dāng)前鏈接:http://jinyejixie.com/article46/gpihg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、外貿(mào)網(wǎng)站建設(shè)電子商務(wù)、移動網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
阜康市| 岚皋县| 高碑店市| 汶川县| 称多县| 康乐县| 宾川县| 鱼台县| 梅州市| 文成县| 吐鲁番市| 双柏县| 德化县| 曲阳县| 乐至县| 岳阳市| 长武县| 大连市| 天峨县| 达尔| 富阳市| 海南省| 南和县| 霍邱县| 安乡县| 谷城县| 东莞市| 简阳市| 中牟县| 海口市| 洪雅县| 大悟县| 临沂市| 电白县| 休宁县| 镇江市| 肃南| 个旧市| 荆州市| 兰考县| 怀安县|