用C中的strptime()转换“%y-%m-%d”失败

时间:2011-10-18 18:26:56

标签: c strptime

我正在尝试使用strptime将字符串“2011-12-12”转换为时间值。有人可以解释为什么这不起作用?

根据文件:

  

格式由零个或多个指令组成。每个指令由以下之一组成:一个或多个空格字符(由isspace()指定);普通人物(既不是'%'也不是白空间);或转换规范。

if( strptime(date, "%y-%m-%d", &tm) != NULL)

1 个答案:

答案 0 :(得分:4)

看看the documentation%y说明符是两位数年份,没有世纪,而%Y是全年,包括世纪。当您对输入字符串使用%y时,它将年份解析为20,然后由于字符串的其余部分(11-12-12)与-%m-%d不匹配,因此解析失败。

更改格式字符串以使用%Y(推荐),或将输入更改为使用两位数日期(强烈推荐)。