2014-02-27 127 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 ...