我需要查找给定日期的星期几;我有以下代码但不起作用给定日期的星期几
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