如何在C ++中将日期从一种格式转换为另一种格式。 例如: - 我的日期格式为01-DEC-12,我想在12012012更改(mmddyyyy) 注意我使用的是所有日期格式的字符串。
答案 0 :(得分:2)
您想使用boost date time i/o。
答案 1 :(得分:1)
我确信有一些聪明的代码,但我只是有一个这样的表:
struct MonthNameToNumber
{
string name;
string number;
};
MonthNameToNumber mtable = { { "JAN", "01"}, { "FEB", "02" }, ... { "DEC", "12" } };
其余的只是将一个字符串拆分成几部分并将其以不同的格式粘贴在一起的情况。
答案 2 :(得分:0)
我建议您使用第三方库,而不是自己解析不同的日期格式。如果你想这样做,我建议你定义一些你允许发生的所有日期格式字符串的白名单,例如。
01-DEC-12
12.01.2012
2012-01-12
第二步是为内部使用定义一些通用日期格式(例如UNIX-Timestamp,time_t struct,...)。
第三步是为每个日期格式字符串提供一个解析器:这是您需要自己编写某种解析器的部分(例如,使用C / C ++和/或字符串流的基本字符串功能)
小心定义允许格式字符串的白名单。定义像“yyyy-mm-dd”和“yyyy-dd-mm”这样的东西不是一个好主意(想象一下2013-12-01的日期 - >是ist 01-DEC-2013还是12-JAN-2013? )
我绝对会喜欢某些第三方库,例如boost date time。此外,如果你只需要内部使用它,你绝对不应该使用字符串,而是使用另一种表示形式(再次像UNIX-Timestamp或time_t struct)。