如何使用boost实现这种特定的日期时间格式?

时间:2011-02-16 16:17:38

标签: c++ datetime boost formatting

我想格式化这样的日期时间:

YYYYMMDD_HHMMSS

例如,4位数年份,然后是2位数,接着是2位数日,下划线,24小时制,2位数分钟,2位数秒。

例如:2011年2月16日,上午8:05和2秒:

20110216_080502

我应该在以下代码中使用什么格式字符串来实现此目的? (并且,如有必要,需要更改代码):

//...#includes, namespace usings...

ptime now = second_clock::universal_time();

wstringstream ss;
time_facet *facet = new time_facet("???"); //what goes here?
ss.imbue(locale(cout.getloc(), facet));
ss << now;

wstring datetimestring = ss.str();

以下是我到目前为止尝试过的一些字符串:

%Y%m%d_%H%M%S :“2011年2月16日16:51:16”

%Y%m%d :“2011年2月16日”

%H%M%S :“16:51:16”

这是另一个:

%Y :“2011年2月16日16:51:16”呵呵

3 个答案:

答案 0 :(得分:3)

我认为您需要使用wtime_facet,而不是time_facet。请参阅我在其他问题上发布的working program

答案 1 :(得分:1)

来自date/time facet format flags

"%Y%m%d_%H%M%S"

答案 2 :(得分:1)

  time_facet *facet = new time_facet("%Y%m%d_%H%M%S");