C ++:如何将日期字符串转换为int

时间:2010-10-07 13:58:15

标签: c++ unix time

您好我需要一个将字符串时间转换为int的过程。在unix下支持所有这些格式:

 "Wed, 09 Feb 1994 22:23:32 GMT"       -- HTTP format
 "Thu Feb  3 17:03:55 GMT 1994"        -- ctime(3) format
 "Thu Feb  3 00:00:00 1994",           -- ANSI C asctime() format
 "Tuesday, 08-Feb-94 14:15:29 GMT"     -- old rfc850 HTTP format
 "Tuesday, 08-Feb-1994 14:15:29 GMT"   -- broken rfc850 HTTP format

 "03/Feb/1994:17:03:55 -0700"   -- common logfile format
 "09 Feb 1994 22:23:32 GMT"     -- HTTP format (no weekday)
 "08-Feb-94 14:15:29 GMT"       -- rfc850 format (no weekday)
 "08-Feb-1994 14:15:29 GMT"     -- broken rfc850 format (no weekday)

 "1994-02-03 14:15:29 -0100"    -- ISO 8601 format
 "1994-02-03 14:15:29"          -- zone is optional
 "1994-02-03"                   -- only date
 "1994-02-03T14:15:29"          -- Use T as separator
 "19940203T141529Z"             -- ISO 8601 compact format
 "19940203"                     -- only date

 "08-Feb-94"         -- old rfc850 HTTP format    (no weekday, no time)
 "08-Feb-1994"       -- broken rfc850 HTTP format (no weekday, no time)
 "09 Feb 1994"       -- proposed new HTTP format  (no weekday, no time)
 "03/Feb/1994"       -- common logfile format     (no time, no offset)

 "Feb  3  1994"      -- Unix 'ls -l' format
 "Feb  3 17:03"      -- Unix 'ls -l' format

 "11-15-96  03:52PM" -- Windows 'dir' format 

请你提出建议。

3 个答案:

答案 0 :(得分:0)

我会仔细看看Boost.Date_TimeDate-time input/output看起来像你想要的。

答案 1 :(得分:0)

我不知道任何非增强解决方案。你可能不得不依靠istringstream并自己动手。它应该不会太难,只需确保为解析器提供一组很好的测试用例。

答案 2 :(得分:0)

尝试time_get facet类。公共职能

get_time
get_date
get_weekday
get_monthname
get_year 

返回日期数据并检查条件您要显示的日期格式,您可以相应地显示该格式的日期。