【问题标题】:Convert "%y-%m-%d" with strptime() in C fails在 C 中使用 strptime() 转换“%y-%m-%d”失败
【发布时间】:2011-10-18 18:26:56
【问题描述】:

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

根据文档:

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

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

【问题讨论】:

  • %- 是转换规范吗? (我想也许你只是想要-
  • 我犯了一个错误。最初我尝试使用 -,将其更改为 %- 进行测试。两种情况都失败了。我在发布时忘记删除“%”。

标签: c strptime


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-16
    • 2011-10-24
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多