当前位置: 首页 > wzjs >正文

青岛哪家做网站的公司莱芜搬家公司电话

青岛哪家做网站的公司,莱芜搬家公司电话,wordpress如何创建导航栏,东莞建设网站官网登录最简单的time 在C语言编程中&#xff0c;处理时间最简单的函数就是time了。它的原型为&#xff1a; #include <time.h> time_t time(time_t *_Nullable tloc);返回自从EPOCH&#xff0c;即1970年1月1日的零点零时零分&#xff0c;到当前的秒数。 输入参数可以是NULL。…

最简单的time

在C语言编程中,处理时间最简单的函数就是time了。它的原型为:

#include <time.h>  time_t time(time_t *_Nullable tloc);

返回自从EPOCH,即1970年1月1日的零点零时零分,到当前的秒数。

输入参数可以是NULL。如果输入参数不是NULL,那么返回值也会存入tloc的地址处。

需要注意的是,在不同的平台上,这里的time_t定义可能不同。

glibc-devel-2.41中,/usr/include/bits/types/time_t.h中有如下定义:

 #include <bits/types.h>5 6 /* Returned by `time'.  */7 #ifdef __USE_TIME64_REDIRECTS8 typedef __time64_t time_t;9 #else10 typedef __time_t time_t;11 #endif

__time64_t__time_t的定义则如下:

__STD_TYPE __TIME64_T_TYPE __time64_t;__STD_TYPE __TIME_T_TYPE __time_t;      /* Seconds since the Epoch.  */

再继续跟下去,涉及到各种宏等分支,最终的定义在Fedora 42的X86_64平台上,这个值是long int。

Linux中的gettimeofday/settimeofday

time简单,但是也粗糙,它只能取到秒这个单位。而gettimeofday则可能取到微秒。

与之相对,settimeofday则可以设置系统时间。

gettimeofday/settimeofday的原型如下:

       #include <sys/time.h>int gettimeofday(struct timeval *restrict tv,struct timezone *_Nullable restrict tz);int settimeofday(const struct timeval *tv,const struct timezone *_Nullable tz);

struct timeval的定义为:

          struct timeval {  time_t      tv_sec;     /* seconds */  suseconds_t tv_usec;    /* microseconds */  };

tv_sec就是秒数,tv_usec是微秒。

struct timezone的定义为:

          struct timezone {  int tz_minuteswest;     /* minutes west of Greenwich */  int tz_dsttime;         /* type of DST correction */  };

当执行gettimeofday之后,返回0表示成功,非0表示失败。

需要注意的是,tz这个结构已经过时,在我们使用gettimeofday与settimeofday的时候,直接把tz设为NULL,取得或者设置当前的本地时间就好了。

Windows中的GetLocalTime/SetLocalTime

在Windows环境下,取得与设置时间,可以使用GetLocalTime与SetLocalTime函数。

这两个函数的原型如下:

void GetLocalTime([out] LPSYSTEMTIME lpSystemTime
);BOOL SetLocalTime([in] const SYSTEMTIME *lpSystemTime
);

相关的数据结构定义如下:

typedef struct _SYSTEMTIME {WORD wYear;WORD wMonth;WORD wDayOfWeek;WORD wDay;WORD wHour;WORD wMinute;WORD wSecond;WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;

其中:
wYear

年数,范围是从1601到30872。

mMonth

月数,范围是从1到12。

mDayOfWeek

周偏移数,范围是从0到6。

wDay

天数,范围是从 1 到 31。

wHour

小时数,范围是从 0 到 23。

wMinute

分钟数,范围是从 0 到 59。

wSecond

秒数,范围是从 0 到 59。

wMilliseconds

毫秒数,范围是从 0 到 999。

还需要注意,SetLocalTime的返回值是布尔值,成功为非0。

以下代码,把一个从Linux取得的timeval时间,转化成Windows上的时间,进行设置:

int set_local_time_by_timeval (const struct timeval *tv)
{struct tm utc_tm;SYSTEMTIME st = { 0 };   if (localtime_s (&utc_tm, &tv->tv_sec) != 0)  {    return -1;}  st.wYear = utc_tm.tm_year + 1900;  st.wMonth = utc_tm.tm_mon + 1;  st.wDay = utc_tm.tm_mday;  st.wHour = utc_tm.tm_hour;  st.wMinute = utc_tm.tm_min;  st.wSecond = utc_tm.tm_sec;  st.wMilliseconds = (WORD)(time % (1000 * 1000) / 1000);  return SetLocalTime (&st) ? 0 : -1;

glib里的g_get_monotonic_time

如果我们的项目使用了glib(注意是glib,不是glibc),还有一个方便的函数可以使用,那就是g_get_monotonic_time

这个函数表示系统启动以来经过的微秒数,用来做一些时间间隔设计等工作。

比如,我们需要开发一些timer类功能,在程序经过若干时间之后,执行什么操作,如果使用time或者gettimeofday之类的函数,在系统时间改变之后,就会错乱。

但是,如果我们使用g_get_monotonic_time则可以完全避免这种问题。

如:

gint64 start = g_get_monotonic_time();/* 此处是需要测量的业务代码 */
/* 而且有可能系统时间更改 */gint64 end = g_get_monotonic_time();
g_print("耗时: %" G_GINT64_FORMAT " 微秒\n", end - start);

glib的这个函数有点像C++中的std::chrono::steady_clock

底层的clock_gettime

如果进行更精确地时间控制,在Linux中还可以使用clock族的几个函数:

    #include <time.h>  int clock_getres(clockid_t clockid, struct timespec *_Nullable res);  int clock_gettime(clockid_t clockid, struct timespec *tp);  int clock_settime(clockid_t clockid, const struct timespec *tp);

其中,clockid是可以控制的一些参数,如CLOCK_MONOTONIC、CLOCK_BOOTTIME、CLOCK_REALTIME等,具体意义可以见文知义。

而timespec的定义类似于timeval,但是第二个参数不是微秒,而是纳秒。

      #include <time.h>  struct timespec {  time_t     tv_sec;   /* Seconds */  /* ... */   tv_nsec;  /* Nanoseconds [0, 999'999'999] */  };

文章转载自:

http://87e1rynE.qkqhr.cn
http://KspLGxL5.qkqhr.cn
http://eSXvQHGp.qkqhr.cn
http://UkTgyTTL.qkqhr.cn
http://O1YmJxtD.qkqhr.cn
http://rdNzRfPL.qkqhr.cn
http://WgfUWYLh.qkqhr.cn
http://0cTg0z0s.qkqhr.cn
http://Ussm5YcS.qkqhr.cn
http://Kp0WxIVh.qkqhr.cn
http://DZdqfZYc.qkqhr.cn
http://a1wHM0sM.qkqhr.cn
http://5K8M7FPv.qkqhr.cn
http://qit3cmkM.qkqhr.cn
http://dJPq04NU.qkqhr.cn
http://fFcGjolS.qkqhr.cn
http://lnTv59Av.qkqhr.cn
http://AIxXyqIy.qkqhr.cn
http://s1N0lfQg.qkqhr.cn
http://DtonI5L5.qkqhr.cn
http://zls4i1Jf.qkqhr.cn
http://ZSBp36gx.qkqhr.cn
http://U8WvcmPM.qkqhr.cn
http://C0kk3q32.qkqhr.cn
http://nHw6lq4w.qkqhr.cn
http://SyEbqCQo.qkqhr.cn
http://5JOfRD5W.qkqhr.cn
http://tn7q8w5k.qkqhr.cn
http://HjzCbpUO.qkqhr.cn
http://vRxuDBiJ.qkqhr.cn
http://www.dtcms.com/wzjs/776354.html

相关文章:

  • wordpress movies themes旺道seo软件
  • 微信平台与微网站开发h5免费制作平台火蚁邀请函怎么写
  • 网站设计报价怎么做网站主机查询
  • psd网站首页图片安徽元鼎建设工程 网站
  • 企业网站seo推广方案app下载平台服务
  • 男女做暧昧小视频网站自己做的网站外网访问
  • 网站建设培训学校广州如何优化网站提高排名
  • seo排名优化课程珠海网站建设优化
  • 政务网站建设相关文件用python 做网站
  • 网站添加 备案wordpress 云存储
  • 怎么做电商网站 用户画像上海缪斯设计公司官网
  • 网站备案查询站长工具seo搜索引擎优化价格
  • 佛山营销型网站设计宁波企业建站
  • 东莞中小型网站建设网址你懂我意思正能量2021
  • python网站开发网站建设 深度网
  • 易网官方网站中国互联网企业排名前十名
  • 网站推广策划公司做微商网站公司
  • 电子商务网站平台建设目标eclipse做企业网站
  • 汕尾东莞网站建设小程序商店怎么做
  • 免费网站建设招商施工企业营销人员培训
  • 南京网站建设润洽网站icp备案信息不能为空
  • 教学网站前台er图门户型网站特点
  • 网站主机要怎么做电商进货渠道
  • 网站建设捌金手指下拉十一百事企业的网站建设类型
  • 网站建设 响应式 北京免费网站设计定制
  • WordPress多站点恢复在百度上做网站推广效果怎么样
  • 创建网站向导和模板网站备案 更换接入商
  • 吴忠建设网站网络推广策划案例
  • .概述网站建设的基本流程如何制作ppt课件
  • dede 汽车网站模板深圳商城网站设计价格