【问题标题】:How to get a date and time in Hexidecimal in C如何在C中以十六进制获取日期和时间
【发布时间】:2017-04-01 01:10:27
【问题描述】:

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

【问题讨论】:

  • 保存time (NULL)的返回有什么问题;以无符号值和以您选择的任何格式打印?
  • 对十六进制日期/时间的需求很少:) 恐怕这将是一项 DIY 工作..

标签: c date time hex


【解决方案1】:

您可以使用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

【讨论】:

  • 哦,那很好。好吧,在通往下一个时尚潮流的路上——Hex Clock!我喜欢这个解决方案。
猜你喜欢
  • 2020-03-20
  • 1970-01-01
  • 1970-01-01
  • 2022-09-29
  • 2021-07-11
  • 2017-12-21
  • 1970-01-01
  • 2021-10-22
  • 1970-01-01
相关资源
最近更新 更多