c - 在 C 中返回 uint16_t 值的 gettime() 函数

标签 c time.h gettime uint16

您好,我正在尝试在 C 中执行一个返回 uint16_tgetTime() 函数。

我现在确实可以成功获取一个字符数组

这是我的字符数组输出代码。

假设今天是 2014 年 12 月 9 日,输出将为 091214

那么如何使输出成为 uint16_t 类型呢?

在这种情况下,如果它是 uint16_t 类型,我可以将 “0” 保留在 091214 中吗?

char *getT(){
struct tm *tm;
time_t t;
static char str_date[10];

t = time(NULL);
tm = localtime(&t);

strftime(str_date, sizeof(str_date), "%d%m%y", tm);
return str_date;}

我从网上找到的代码修改了另一种方法。

这个返回 9+12+14....

uint16_t getD(){
struct tm *tm_time;
time_t ti;
//const time_t create_time;
uint16_t t, d;
ti = time(NULL);
tm_time = localtime(&ti);
t = (tm_time->tm_sec >> 1) + (tm_time->tm_min << 5) + (tm_time->tm_hour << 11);
d = (tm_time->tm_mday>>1) + ((tm_time->tm_mon+1) << 5) + ((tm_time->tm_year-80) << 9);
printf("%d %d %d %d \n",d,tm_time->tm_mday>>1,tm_time->tm_mon<<5,(tm_time->tm_year-80)<<9);
return d;}

最佳答案

uint16_t getD() {
  time_t ti;
  ti = time(NULL);
  struct tm tm_time;
  tm_time = *localtime(&ti);

  //const time_t create_time;
  uint16_t t, d;
  d = tm_time.tm_mday
      + (tm_time.tm_mon + 1) * 32
      + (tm_time.tm_year - (1980-1900)) * 512;

  // Print ddmmyy
  printf("%02d%02d%02d\n", 
      (int) d%32, (int) (d/32)%16, (int) ((d/512)%128 + (1980-1900))%100);
  return d;
}

关于c - 在 C 中返回 uint16_t 值的 gettime() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27392055/

相关文章:

c - 在 C 中使用 calloc 时,指针地址中存储的是什么?

c - STM32嵌入式内存溢出/泄漏检测

c++ - 在发送有关帖子的一些信息之前,如何让 libcurl 进行回调?

c++ - 从 time_t 转换为 tm 然后再转换回 time_t 时出现问题

c - 如何轻松添加 gmtime 的小时和分钟

javascript - 将 gettime 保存到表单字段

Javascript - 如何使 getTime() 在所有计算机上统一?

c - 如何在没有 clang_complete 的情况下在 vim 中获得 C 代码完成?

c - 如何在C中格式化系统时间?

C、clock_gettime,返回不正确的纳秒值?