您好,我正在尝试在 C 中执行一个返回 uint16_t
的 getTime()
函数。
我现在确实可以成功获取一个字符数组
这是我的字符数组输出代码。
假设今天是 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/