Формат даты повышения C ++ - PullRequest
       11

Формат даты повышения C ++

3 голосов
/ 07 сентября 2010

У меня есть векторная строка дат из "dd-mmm-yyyy", поэтому, например, сегодняшняя дата будет:

  std::string today("07-Sep-2010"); 

Я хотел бы использовать класс даты в boost, но чтобысоздать объект даты, конструктор для даты должен быть вызван следующим образом:

 date test(2010,Sep,07);

Есть ли простой / элегантный способ передачи даты в формате "дд-ммм-гггг"?Моей первой мыслью было использовать substr, а затем приводить его?Но я читал, что есть также возможность использования «фасетов даты»?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 07 сентября 2010
include "boost/date_time/gregorian/parsers.hpp"
date test = boost::gregorian::from_us_string("07-Sep-2010")
2 голосов
/ 07 сентября 2010

Существует встроенный синтаксический анализатор для этой формы даты в самом Boost, посмотрите документы здесь:

http://www.boost.org/doc/libs/1_44_0/doc/html/date_time/date_time_io.html#date_time.io_objects

date_type parse_date (...) Параметры: string_type input string_typeformat special_values_parser Разбор даты из заданного ввода с использованием заданного формата.

string inp("2005-Apr-15");
string format("%Y-%b-%d");
date d;
d = parser.parse_date(inp, 
                      format,
                      svp);
// d == 2005-Apr-15

с inp с учетом ваших потребностей.

...