我是C编程的新手,我想帮助完成一项简单的任务。
所以我有这个功能:
buildAutomatically: {
title: 'Build Automatically',
type: 'boolean',
default: false,
}
"buildAutomatically: {
"title": "Build Automatically",
"type": "boolean",
"default": false
}
我想要做的是获取DD / MM / YYYY HH:MM格式化时间并将其存储在time_s变量中,以便我可以返回它。我的问题是我无法弄清楚如何格式化字符串并存储它而不打印它。到目前为止,我所发现的只是sprint方法,它实际上在存储时打印格式化的字符串,这不是我想要的。
简而言之,我只想从time_t时间开始,以我提到的格式存储在time_s中。
很抱歉,如果我没有正确解释所有内容,但我是C编程新手。
答案 0 :(得分:1)
函数ctime
采用time_t
并以固定格式输出字符串。如果这不足以完成您的任务,您应该使用strftime
。这有一大堆格式说明符,可以满足您的需要。
适用于struct tm
,因此您首先必须使用time_t
或localtime
将gmtime
转换为.ix[]
。
答案 1 :(得分:0)
您需要sprintf
,类似于printf
但是"打印"将结果放入缓冲区而不是屏幕上。
将指针返回静态缓冲区:
char *time2str(time_t time) {
static_char *str_fmt = "%02d/%02d/%4d %02d:%02d";
static char time_s[20]; // ugly, 20 is hopefully enough
// ^ static is important here, because we return a pointer to time_s
// and without static, the time_s buffer will no longer exist once the
// time2str function is finished
sprintf(time_s, str_fmt, time.....);
return time_s;
}
或(更好),我们提供一个缓冲区(足够长),其中放置转换后的字符串:
void time2str(time_t time, char *time_s) {
static_char *str_fmt = "%02d/%02d/%4d %02d:%02d";
sprintf(time_s, str_fmt, time.....);
return time_s;
}
...
char mytime[20]; // ugly, 20 is hopefully enough
time2str(time, mytime);
printf("mytime: %s\n, mytime);
或time2str函数返回一个新分配的缓冲区,该缓冲区将包含转换后的字符串。必须稍后使用free
释放该缓冲区。
char *time2str(time_t time) {
static_char *str_fmt = "%02d/%02d/%4d %02d:%02d";
char *time_s = malloc(20); // ugly, 20 is hopefully enough
sprintf(time_s, str_fmt, time.....);
return time_s;
}
...
char *mytime = time2str(time);
printf("mytime: %s\n, mytime);
free(mytime);
完成sprintf
的论证是留给读者的练习。
免责声明:未经测试的非错误检查代码仅用于演示目的。
答案 2 :(得分:0)
将time_t
值转换为struct tm
类型后,您可以使用strftime()
。
答案 3 :(得分:0)
一般来说,
time()
以将当前时间转换为time_t
变量localtime()
获取指向struct tm
结构的指针,并在单独的字段中显示时间信息strftime()
以获取所需的时间/日期格式。建议阅读localtime()
和strftime()
的手册页以获取所有详细信息
这是一个示例代码,您需要在结果char数组中修改strftime()格式字符串。
time_t currentTimeSec = time(NULL);
struct tm *tmStructptr;
char timeStamp[128];
tmStructptr = localtime( ¤tTimeSec );
strftime( timeStamp, sizeof(timeStamp), "YOUR FORMAT STRING" tmStructptr );
注意:要仅提取星期几,格式字符串将为:"%w"