C中的strptime()函數未能檢測到無效日期。例如:2011-02-31,2011-04-31。 是否有任何其他功能或解決此問題的方法C:strptime中的驗證
3
A
回答
2
在使用strptime
後,您可以使用mktime
來標準化您的結構。上述
struct tm ltm = {0};
char buf[] = "2011-02-31";
puts(buf);
strptime(buf, "%Y-%m-%d", <m);
mktime(<m);
strftime(buf, sizeof(buf), "%Y-%m-%d", <m);
puts(buf);
的例子會產生以下的輸出:
2011-02-31
2011-03-03
如果說之前和mktime
後的字符串不匹配,那麼你就知道該輸入字符串是不是有效日期。
如果您需要知道哪個字段無效,您可以在致電mktime
之前保存ltm
結構的副本。然後,您可以檢查無效格式中的日期(tm_mday
),月份(tm_mon
)還是年份(tm_year
)。對於tm_mon
,0
是1月,而11
是12月。對於tm_year
,這是從1900
開始的年數。請記住在驗證2月份的月份的日期時考慮閏年。
相關問題
- 1. 驗證Java中的NTLMv2身份驗證
- 2. Backbone中的驗證無法驗證?
- 3. 驗證請求中的驗證掛鉤
- 4. 快速驗證器中的驗證
- 5. 在Javascript中的URL驗證InstaGram驗證
- 6. JQuery驗證插件 - 驗證前/驗證過程中的事件
- 7. WCF中的證書驗證
- 8. SQLAlchemy中的驗證
- 9. JSF中的驗證
- 10. BLL中的驗證
- 11. @RepositoryRestController中的驗證
- 12. SQLAlchemy中的驗證
- 13. 驗證驗證碼
- 14. 驗證時驗證
- 15. 驗證碼驗證
- 16. ServiceStack使用驗證碼驗證驗證
- 17. 驗證Rails中
- 18. JPasswordField中驗證
- 19. 驗證jQuery中
- 20. 驗證DataTable中
- 21. 設計驗證登錄驗證:在驗證中包括當前的網址
- 22. Django的Socail,驗證和我的驗證
- 23. 流利的驗證 - 組中的一個自定義的驗證
- 24. Laravel驗證:檢查驗證者驗證失敗的原因
- 25. MVC3驗證,不顯眼驗證 - 驗證消息的星號
- 26. CakePHP驗證和驗證
- 27. 驗證碼驗證問題
- 28. Bean驗證VS JSF驗證
- 29. Knockout驗證禁用驗證
- 30. jQuery驗證組驗證
我正在尋找的東西,會給我一個指示,哪些部分的日期是無效的。就像strptime()如何返回指向最後解析的有效字符的指針一樣。謝謝 – 2012-07-11 08:54:22