C++中获取UTC时间精确到微秒的实现代码_C 语言

在日常开发过程中经常会使用到时间类函数的统计,其中获取1970年至今的UTC时间是比较常使用的,但是在windows下没有直接能够精确到微妙级的函数可用。本文提供方法正好可以解决这类需求问题。

下面先给出C++实现代码

复制代码 代码如下:

#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的微妙数
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); 
或者直接调用:GetUtcCaressing();

最后说明:本文代码在vs2008与VS2010下都进行了测试,可放心使用
附录:本文同时给出UTC时间秒级UTC获取方法代码:

复制代码 代码如下:

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

时间: 2024-09-20 05:38:53

C++中获取UTC时间精确到微秒的实现代码_C 语言的相关文章

c语言中十进制转二进制显示小工具的实现代码_C 语言

计算器在显示二进制位数时候,如果开头是0.是不会显示的,对于在单片机混的人,这个有时候很麻烦,所以写个小工具. 功能就是输入十进制数字,然后显示出2进制,每显示4位一次空格,可以调整位数范围(8的倍数) 如果有谁能知道linux下类似win7的那个计算器,麻烦回复告知一下吧.很是感谢~ 例如: $ dec2bin 1 135Num 8 Binary is : 0B1000 0111done!=============================== $ dec2bin 2 135Num 16

在JSP页面中获取当前日期时间的方法_JSP编程

1. <SCRIPT LANGUAGE="JavaScript"> var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年份(4位,1970-????) myDate.getMonth(); //获取当前月份(0-11,0代表1月) myDate.getDate(); //获取当前日(1-31) myDate.getDay(); //获取当前星期X(0-6,

asp.net C#中获取当前时间毫秒时的函数

asp教程.net c#中获取当前时间毫秒时的函数,下面的几款日期函数应用,最好的方法应该是第五种了. /* 方法一 datetime.now.tostring("yyyy-mm-dd hh:mm:ss:fff") 方法二 environment.tickcount 方法三 datetime.now.millisecond; 方法四 console.writeline(datetime.now.ticks); 方法五    datetime d1 = new datetime.pars

linux中获取系统时间的几种方法

  asctime(将时间和日期以字符串格式表示)   相关函数 time,ctime,gmtime,localtime 表头文件 #include<time.h> 定义函数 char * asctime(const struct tm * timeptr); 函数说明 asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回. 此函数已经由时区转换成当地时间,字符串格式为:"Wed Jun 30 21:49:08

Cocos2d-x中获取系统时间和随机数实例_C 语言

随机数是我们在程序中经常要用到的,cocos2d-x用CCRANDOM_0_1产生随机数,但我们最后给它传入一个随机数种子,这样产生的随机数才是真正的随机数,而这个种子就是我们一般使用的时间.下面通过代码看看我们如何实现. bool HelloWorld::init() { bool bRet = false; do { CC_BREAK_IF(! CCLayer::init()); //获取系统时间 //time_t是long类型,精确到秒,通过time()函数可以获得当前时间和1970年1月

PHP 中获取当前时间[Datetime Now]

在 PHP 中可以通过date()获取当前时间,在>5.2的版本中最好还是用 datetime 类型 date() <?php echo date('Y-m-d H:i:s'); ?> DateTime <?php $dt = new DateTime(); echo $dt->format('Y-m-d H:i:s'); ?> 更完善的方法 上面两个例子返回的当前时间都是服务器时区时间(timezone 可在php.ini中声明) Above examples wil

详解C++中实现继承string类的MyString类的步骤_C 语言

昨天师兄又出了道测试题,让我们实现类似于string类的没有MyString类,刚开始很头疼,可是真正在自己写代码的时候又很兴奋的发现,这个过程真的是个很宝贵的机会,让我又有机会可以很好的熟悉回顾C++的很多知识-类设计,构造析构函数,成员函数,友元函数,引用,重载,字符串操作,动态内存分布.....于是昨天花了半天时间写了300多行代码,并认真的进行了相关测试.修改和总结.因为内容有点丰富,所以想分几次写出来,条理也清楚些. 类的空间分配:类给它的每个对象都分配了独立的空间去存储它的数据成员,

string中c_str(),data(),copy(p,n)函数的用法总结_C 语言

标准库的string类提供了3个成员函数来从一个string得到c类型的字符数组:c_str().data().copy(p,n). 1. c_str():生成一个const char*指针,指向以空字符终止的数组. 注:①这个数组的数据是临时的,当有一个改变这些数据的成员函数被调用后,其中的数据就会失效.因此要么现用先转换,要么把它的数据复制到用户自己可以管理的内存中.注意.看下例: 复制代码 代码如下: const char* c; string s="1234"; c = s.c

php中获取关键词及所属来源搜索引擎名称的代码

复制代码 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <