小编Joh*_*ice的帖子

使用boost date_time来解析和创建HTTP日期

我正在编写一种HTTP代理,所以我需要做三件事:

  1. 给出RFC 2616,sec 3.3中指定的3种格式中的任何格式的HTTP日期,
  2. 将文件日期时间转换为HTTP日期字符串,和
  3. 将日期输出为字符串.

作为参考,这些是我需要解析的日期时间的示例.我只会输出第一种格式:

  Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 822, updated by RFC 1123
  Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
  Sun Nov  6 08:49:37 1994       ; ANSI C's asctime() format
Run Code Online (Sandbox Code Playgroud)

我很确定Boost date_time可以完成所有这些,但是我遇到了一些问题.有没有人有代码可以做到这一点?也许我并没有熟练使用谷歌,但我无法找到一个如何在任何地方提升的例子.

谢谢你的帮助!

更新:我有一个解决方案,但第二个解析器有错误的一年(我猜因为它是一个2位数的年份),最后一个解析器给出了一个例外(见下面的输出).

try
{
  // output time now in GMT
  // format we want: Sun, 06 Nov 1994 08:49:37 GMT
  boost::local_time::local_date_time t(boost::local_time::local_sec_clock::local_time(boost::local_time::time_zone_ptr()));
  boost::local_time::local_time_facet* lf(new boost::local_time::local_time_facet("%a, %d %b %Y %H:%M:%S GMT"));
  std::cout.imbue(std::locale(std::cout.getloc(), lf));
  std::cout << t …
Run Code Online (Sandbox Code Playgroud)

c++ boost http boost-date-time

5
推荐指数
2
解决办法
5365
查看次数

标签 统计

boost ×1

boost-date-time ×1

c++ ×1

http ×1