"2010-03-01"과 같은 날짜 문자열 형식이 있는데 월요일, 화요일처럼 "tm_wday"와 동등한 결과를 얻고 싶습니다 ...tm 구조체에서 날짜 문자열을 tm_wday로 변환하는 방법
누군가가 C에서 어떻게 이것을 달성 할 수있는 힌트를 줄 수 있습니까?
"2010-03-01"과 같은 날짜 문자열 형식이 있는데 월요일, 화요일처럼 "tm_wday"와 동등한 결과를 얻고 싶습니다 ...tm 구조체에서 날짜 문자열을 tm_wday로 변환하는 방법
누군가가 C에서 어떻게 이것을 달성 할 수있는 힌트를 줄 수 있습니까?
확인 strptime()
기능 :
char *strptime(const char *s, const char *format, struct tm *tm);
strptime() 함수 strftime(3)의 반대 기능이며 문자열이 가리키는 TM 구조에 저장되어있는 값의 가리키는 변환 to 형식으로 지정된 형식을 사용하는 tm.
평일을 계산하려면 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;
}