我需要查找給定日期的星期幾;我有以下代碼但不起作用給定日期的星期幾
int day;
char *str ="25/02/2014";
struct tm tm;
if (strptime(str, "%d/%m/%Y", &tm) != NULL)
{
time_t t = mktime(&tm);
day = localtime(&t)->tm_wday;
return day;
}
我在做什麼錯在這裏?
我需要查找給定日期的星期幾;我有以下代碼但不起作用給定日期的星期幾
int day;
char *str ="25/02/2014";
struct tm tm;
if (strptime(str, "%d/%m/%Y", &tm) != NULL)
{
time_t t = mktime(&tm);
day = localtime(&t)->tm_wday;
return day;
}
我在做什麼錯在這裏?
你應該好好struct tm tm;
代替struct tm * tm;
您需要使用memset(&tm,0x00,sizeof(tm));
初始化tm
否則mktime
將返回-1
使用'memset(&tm,0,sizeof tm)',是不是'isdst'字段最好設置爲-1而不是0? (我認爲它幾乎沒有什麼區別,但DST在午夜(h:m:s == 0:00:00)變化很少見)。 – chux
結果4
的日期27/02/2014是正確的,看到time.h
描述
...
int tm_wday星期幾[0,6](星期日= 0)。
星期日是0,星期一= 1,星期二= 2,星期三= 3,星期四= 4 ...
這是一個類似的問題http://stackoverflow.com/questions/5797814/date-to-day-of-the-week-algorithm –
這是否編譯?在這裏它不會除非你用'struct tm tm;'替換struct tm * tm;' –
即使改變了struct tm tm;平日的結果不好。天的結果總是4(「27/02/2014」) – Thulasi