2017-04-01 42 views
0

我需要使用C获取当前日期和时间。但是,我需要它是十六进制格式。他们的函数是以十六进制格式返回时间戳还是必须获取日期和时间并将其转换为HEX?如果是这样,有没有人有一个在C中的转换的例子?如何在C中以十六进制格式获取日期和时间

+1

什么是错的节省时间'返回(NULL)';在一个无符号的值,并以您选择的任何格式打印? –

+0

对于十六进制的日期/时间几乎没有要求:)这将是一个DIY工作,我很害怕.. – ThingyWotsit

回答

2

您可以通过localtime()获得指向tm结构的指针,并从字段中获取所需的值。然后你可以使用sprintf()建立一个时间字符串:

#include <stdio.h> 
#include <time.h> 

int main(void) 
{ 
    time_t raw_time = time(NULL); 
    struct tm *curr = localtime(&raw_time); 

    int year = curr->tm_year + 1900; 
    int month = curr->tm_mon + 1; 
    int day = curr->tm_mday; 

    int hour = curr->tm_hour; 
    int min = curr->tm_min; 
    int sec = curr->tm_sec; 

    char time_str[40]; 
    sprintf(time_str, "%#x/%#x/%#x %#x:%#x:%#x", 
      year, month, day, hour, min, sec); 

    puts("Hex timestamp:"); 
    puts(time_str); 

    sprintf(time_str, "%d/%d/%d %d:%d:%d", 
      year, month, day, hour, min, sec); 

    putchar('\n'); 
    puts("Decimal timestamp:"); 
    puts(time_str); 

    return 0; 
} 

输出示例:

Hex timestamp: 
0x7e1/0x3/0x1f 0x14:0x2d:0x28 

Decimal timestamp: 
2017/3/31 20:45:40 
+0

完美!正是我需要的。好工作。 – Eddie

+1

哦,那很好。那么在去下一个伟大的时尚 - ***六角时钟的路上!***我喜欢这个解决方案。 –

相关问题