如何格式化日期和时间字符串C ++(How to format date and time stri

2019-06-23 21:14发布

比方说,我有time_t的和TM结构。 我不能使用升压,但MFC。 我怎样才能使它像下面的字符串?

Mon Apr 23 17:48:14 2012

是使用的sprintf的唯一途径?

Answer 1:

C库包括strftime专门格式化的日期/时间。 你要求的格式似乎对应于这样的事情:

char buffer[256];

strftime(buffer, sizeof(buffer), "%a %b %d %H:%M:%S %Y", &your_tm);

我相信std::put_time使用类似的格式字符串,但它确实减轻你不必用缓冲明确处理的。 如果你想输出写入流,这是相当方便的,但它进入一个字符串它不是一个很大的帮助 - 你必须这样做:

std::stringstream buffer;

buffer << std::put_time(&your_tm, "%a %b %d %H:%M:%S %Y");

// now the result is in `buffer.str()`.

std::put_time是新的与C ++ 11,但C ++ 03有一个time_put在一个区域, 可以做同样的事情方面。 如果没有记错,我还是设法使其工作一次,但之后决定是不值得的麻烦,因为我还没有做到。



Answer 2:

我想尝试std::put_time 。 看到这里的链接了解如何使用它的信息。 它支持全格式字符串和等。



Answer 3:

MFC具有COleDateTime其具有构造器这需要time_t (或__time64_t )和具有Format方法。



Answer 4:

ctime()产生该格式串。 它需要一个指向time_t
还有asctime()需要一个指向一个struct tm和不一样的。



Answer 5:

CTime obj1(time_tObj);

CString s = obj1.Format( "%a %b %d %H:%M:%S %Y" );


Answer 6:

如果你需要担心不同的地区格式化,不要忘了与当前的区域设置初始化CRT。 这会影响的COleDateTime了。

setlocale(LC_COLLATE,“.OCP”); // sets the sort order

setlocale(LC_MONETARY, “.OCP”); // sets the currency formatting rules

setlocale(LC_NUMERIC, “.OCP”); // sets the formatting of numerals

setlocale(LC_TIME, “.OCP”); // defines the date/time formatting

请参见我的博客文章在其MSDN文章和其他来源的联系。 http://gilesey.wordpress.com/2012/12/30/initailizing-mfccrt-for-consumption-of-regional-settings-internationalizationc



文章来源: How to format date and time string in C++
标签: c++ datetime mfc