-1

如何在 C++ 中将日期从一种格式转换为另一种格式。例如:- 我的日期格式为 01-DEC-12,我想更改为 12012012 (mmddyyyy) 注意我对所有日期格式都使用字符串。

4

3 回答 3

2

您想使用提升日期时间 i/o

于 2013-08-20T09:01:46.517 回答
1

我确信有一些聪明的代码,但我只会有一个这样的表:

 struct MonthNameToNumber
 {
     string name;
     string number;
 };

 MonthNameToNumber mtable = { { "JAN", "01"}, { "FEB", "02" }, ... { "DEC", "12" } };

其余的只是将字符串拆分为多个部分并以不同格式将其粘贴在一起的情况。

于 2013-08-20T09:01:56.440 回答
0

我建议为此使用第三方库,而不是您想自己解析不同的日期格式。如果你想这样做,我建议你为你允许发生的所有日期格式字符串定义某种白名单,例如

01-DEC-12
12.01.2012
2012-01-12

第二步是定义一些通用的日期格式供内部使用(例如 UNIX-Timestamp、time_t 结构......)。

第三步是为每个日期格式字符串提供解析器:这是您需要自己编写某种解析器的部分(例如,使用 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 结构)。

于 2013-08-20T09:10:04.193 回答