2014-02-27 163 views
0

我需要查找給定日期的星期幾;我有以下代碼但不起作用給定日期的星期幾

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; 
} 

我在做什麼錯在這裏?

+0

這是一個類似的問題http://stackoverflow.com/questions/5797814/date-to-day-of-the-week-algorithm –

+0

這是否編譯?在這裏它不會除非你用'struct tm tm;'替換struct tm * tm;' –

+0

即使改變了struct tm tm;平日的結果不好。天的結果總是4(「27/02/2014」) – Thulasi

回答

2

你應該好好struct tm tm;代替struct tm * tm;

您需要使用memset(&tm,0x00,sizeof(tm));初始化tm否則mktime將返回-1

+0

使用'memset(&tm,0,sizeof tm)',是不是'isdst'字段最好設置爲-1而不是0? (我認爲它幾乎沒有什麼區別,但DST在午夜(h:m:s == 0:00:00)變化很少見)。 – chux

0

結果4的日期27/02/2014是正確的,看到time.h

描述
...
int tm_wday星期幾[0,6](星期日= 0)。

星期日是0,星期一= 1,星期二= 2,星期三= 3,星期四= 4 ...