我正在尝试使用 strptime 将字符串“2011-12-12”转换为时间值。有人可以解释为什么这不起作用吗?
根据文档:
该格式由零个或多个指令组成。每个指令由以下之一组成: 一个或多个空白字符(由 isspace() 指定);一个普通字符(既不是 '%' 也不是空白字符);或转换规范。
if( strptime(date, "%y-%m-%d", &tm) != NULL)
看看文档。说明%y
符是两位数的年份,没有世纪,而是%Y
全年,包括世纪。当您使用%y
输入字符串时,它会将年份解析为20
,然后由于字符串的其余部分 ( 11-12-12
) 不匹配-%m-%d
,因此解析失败。
更改您的格式字符串以使用%Y
(推荐),或更改您的输入以使用两位数日期(强烈不推荐)。