strptime对它读取/转换的信息做了什么?

时间:2011-08-17 02:55:14

标签: c posix standards-compliance strptime

strptime的规范:

http://pubs.opengroup.org/onlinepubs/9699919799/functions/strptime.html

主要是关于可能的转换规范以及它们需要什么输入。但是,似乎没有关于此函数如何将结果存储在struct tm中的规范。如果多个说明符读取部分或完全冲突的数据,应该会发生什么。一个简单的例子是%m%b(或甚至是重复%m)的存在,阅读冲突的月份,但也许更有趣的例子是%d(每月的某一天)和%a(星期几)冲突。哪个优先? strptime是否应该确保struct tm中的输出一致,或者只是将字段存储为读取?某些事情如%W(一年中的某一周)在struct tm中没有直接表示,所以我认为它们必须导致基于其他字段生成派生输出,但不清楚何时适用。< / p>

我意识到由于规范似乎缺乏,我可能会要求一个根本不存在的答案,但可以表征一个有用答案的事情将是:

  • 标准化功能所依据的历史实施的行为。
  • 相关缺陷报告的引用
  • 链接到该主题的过去讨论(邮件列表,错误跟踪器,usenet等)
  • 时间解析的其他相关标准

1 个答案:

答案 0 :(得分:2)

其他字段可用于验证日期。验证和验证,您可以将字符串转换为重新发送日期的一系列数字,然后您必须验证所有这些数字是否指向一个正确的日期,例如星期几是正确的,如果日期无效,则strptime会返回NULL