我有一个日期字符串格式,比如“2010-03-01”,我希望得到的“tm_wday”等同于周一,周二......
有人可以给我一个如何在c中实现这个目的的提示吗?
答案 0 :(得分:3)
检查strptime()
功能:
char *strptime(const char *s, const char *format, struct tm *tm);
strptime()函数是strftime(3)的逆函数并转换为 s指向存储在tm结构中的值的字符串 tm指向,使用格式指定的格式。
答案 1 :(得分:1)
使用mktime()
计算工作日。
#include <memory.h>
#include <stdio.h>
#include <time.h>
int main(void) {
const char *p = "2010-03-01";
struct tm t;
memset(&t, 0, sizeof t); // set all fields to 0
if (3 != sscanf(p,"%d-%d-%d", &t.tm_year, &t.tm_mon, &t.tm_mday)) {
; // handle error;
}
// Adjust to struct tm references
t.tm_year -= 1900;
t.tm_mon--;
// Calling mktime will set the value of tm_wday
if (mktime(&t) < 0) {
; // handle error;
}
printf("DOW(%s):%d (0=Sunday, 1=Monday, ...)\n", p, t.tm_wday);
// DOW(2010-03-01):1 (0=Sunday, 1=Monday, ...)
return 0;
}