如何格式化日期时间对象格式为dd/mm/yyyy?

Alf*_*edo 47 c++ boost date

如何使用Boost库以dd/mm/yyyy H格式打印当前日期?

是)我有的:

boost::posix_time::ptime now = boost::posix_time::second_clock::local_time();
cout << boost::posix_time::to_simple_string(now).c_str();

2009-Dec-14 23:31:40
Run Code Online (Sandbox Code Playgroud)

但我想要:

2009年12月14日23:31:40

Tod*_*lin 80

如果您正在使用Boost.Date_Time,则使用IO方面完成此操作.

您需要包括boost/date_time/posix_time/posix_time_io.hpp以获得正确的面类型定义(wtime_facet,time_facet,等)boost::posix_time::ptime.完成后,代码非常简单.ostream你想输出到imbue ,然后输出你的ptime:

#include <iostream>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/date_time/posix_time/posix_time_io.hpp>

using namespace boost::posix_time;
using namespace std;

int main(int argc, char **argv) {
  time_facet *facet = new time_facet("%d-%b-%Y %H:%M:%S");
  cout.imbue(locale(cout.getloc(), facet));
  cout << second_clock::local_time() << endl;
}
Run Code Online (Sandbox Code Playgroud)

输出:

14-Dec-2009 16:13:14
Run Code Online (Sandbox Code Playgroud)

另请参阅boost文档中的格式标志列表,以防您想要输出更高级的内容.

  • 请问cout取得所有权并删除分面指针? (4认同)
  • @Jules cout将获得所有权.见http://rhubbarb.wordpress.com/2009/10/17/boost-datetime-locales-and-facets/ (4认同)
  • 区域设置取得所有权.因此,如果您保留此区域设置,则可以使用任何输出流,而不仅仅是cout (3认同)
  • 有趣的边节点:让我几乎疯了,当我试图将格式化日期时间变成std :: wstring时,我无法正常运行.我终于意识到有一个boost :: posix_time :: wtime_facet. (2认同)