How do I get milliseconds since midnight UTC in C?

后端 未结 5 1181
太阳男子
太阳男子 2020-12-18 01:45

The time function in time.h gives milliseconds since the epoch.

相关标签:
5条回答
  • 2020-12-18 02:13

    This is a simple way:

    time_t seconds_since_midnight = time(NULL) % 86400;
    

    To get approximate milliseconds since midnight, multiply seconds_since_midnight by 1000.

    If you need more resolution (consider whether you really do), you will have to use another function such as gettimeofday().

    0 讨论(0)
  • 2020-12-18 02:15

    You use gettimeofday(2) which is defined in POSIX.1 and BSD.

    It returns seconds and microseconds as defined in struct timeval from sys/time.h.

    0 讨论(0)
  • 2020-12-18 02:20

    Take a look at gmtime() Converts directly to Coordinated Universal Time (UTC)...

    0 讨论(0)
  • 2020-12-18 02:27

    You will find C code examples for getting time and converting it to various formats here.

    0 讨论(0)
  • 2020-12-18 02:32

    This is the precise way:

    struct timeval tv;
    int msec = -1;
    if (gettimeofday(&tv, NULL) == 0)
    {
        msec = ((tv.tv_sec % 86400) * 1000 + tv.tv_usec / 1000);
    }
    

    That will store into msec the number of milliseconds since midnight. (Or -1 if there was an error getting the time.)

    Although it's usually a bad idea to store time-values in an int, I'm being a little cavalier and assuming int is at least 32-bit, and can easily accommodate the range (-1) to 86,400,000.

    But I don't know if it's worth all the effort.

    0 讨论(0)
提交回复
热议问题