美文网首页Linux/C
C 时间函数使用

C 时间函数使用

作者: 国服最坑开发 | 来源:发表于2019-12-14 11:03 被阅读0次

0x01 主要涉及对象

  • struct timespec
struct timespec
{
  __time_t tv_sec;      /* Seconds.  */
  __syscall_slong_t tv_nsec;    /* Nanoseconds.  */
};
  • struct tm
struct tm
{
  int tm_sec;           /* Seconds. [0-60] (1 leap second) */
  int tm_min;           /* Minutes. [0-59] */
  int tm_hour;          /* Hours.   [0-23] */
  int tm_mday;          /* Day.     [1-31] */
  int tm_mon;           /* Month.   [0-11] */
  int tm_year;          /* Year - 1900.  */
  int tm_wday;          /* Day of week. [0-6] */
  int tm_yday;          /* Days in year.[0-365] */
  int tm_isdst;         /* DST.     [-1/0/1]*/

# ifdef __USE_MISC
  long int tm_gmtoff;       /* Seconds east of UTC.  */
  const char *tm_zone;      /* Timezone abbreviation.  */
# else
  long int __tm_gmtoff;     /* Seconds east of UTC.  */
  const char *__tm_zone;    /* Timezone abbreviation.  */
# endif
};
  • localtime_r
    完成 tm 向 timespec 的转换

0x02 使用例:

#include <sys/stat.h>
#include <time.h>


char *cc_time_2_str(struct timespec ts) {
    struct tm t;
    char      *buf = (char *) malloc(64);
    strftime(buf, 64, "%Y-%m-%d %H:%M:%S", localtime_r(&ts.tv_sec, &t));
    return buf;
}

struct timespec *cc_get_system_time() {
    struct timespec *curr_time = (struct timespec *) malloc(sizeof(struct timespec));
    if (clock_gettime(CLOCK_REALTIME, curr_time) != 0)
        exit(1);
    return curr_time;
}


int main(int argc, char *argv[]) {

    struct timespec *now     = cc_get_system_time();
    char            *now_str = cc_time_2_str(*now);
    printf("time now is %s\n", now_str);
    free(now_str);
    free(now);

    exit(0);
}

为了方便使用, 函数设计时,还是习惯在函数内部返回一个malloc 指针, 外部 free 即可.

相关文章

  • C 时间函数使用

    0x01 主要涉及对象 struct timespec struct tm localtime_r完成 tm 向 ...

  • 各种时间函数的恩与怨

    C++标准库没有提供所谓的日期类型。C++继承了C语言用于日期和时间操作的结构和函数。为了使用日期和时间相关的函数...

  • iOS or Swift如何在framework加载完 做一些“

    使用__attribute__((constructor)) 用法 :c 函数前添加, c函数名随便起 ``` _...

  • c++   inline

    在C中,编译器使用宏定义节省编译时间。在C++中使用内联函数来实现同样的效果。在程序编译时,编译器会将内联函数调用...

  • iOS 进制转换

    1、使用C语言函数 2、使用输出

  • 四,函数

    四、函数的使用 函数的基本使用[图片上传失败...(image-b2c144-1555236216120)] 函数...

  • C++---- 日期 & 时间

    C++ 标准库没有提供所谓的日期类型。C++ 继承了 C 语言用于日期和时间操作的结构和函数。为了使用日期和时间相...

  • C++<第二十篇>:日期与时间

    C++ 标准库没有提供所谓的日期类型。C++ 继承了 C 语言用于日期和时间操作的结构和函数。为了使用日期和时间相...

  • c++ 指针

    原文地址摘要:这篇文章详细介绍C/C++的函数指针,请先看以下几个主题:使用函数指针定义新的类型、使用函数指针作为...

  • Linux boot的第一步:启动汇编调用main函数

    为了讲清原理,我们首先介绍C函数调用机制,然后再介绍汇编调用C函数。 一、C函数调用机制 对于汇编中的函数,其使用...

网友评论

    本文标题:C 时间函数使用

    本文链接:https://www.haomeiwen.com/subject/sdjcnctx.html