2012-04-05 99 views
0

日期月份部分我即filecreation日期和系统日期都在INT格式阅读在C++

 "20120304","20120404" which is something like YYYYMMDD. 

两个日期我只想把MM的部分这两个日期的这些两个日期从一个函数返回为整数。

请提出一些实例

由于

+0

实际上yyyy是y,mm是m并且dd是d,并且它们被连接到一个变量日期,如date = y + m + d; – gandhigcpp 2012-04-05 05:31:29

+0

您的声明表示形式为整数对您的声明没有意义,即使用+简单地将年,月和日值连接起来以产生最终值。你确定你的日期没有被表示为8个字符的字符串吗? – 2012-04-05 05:35:45

+0

修改您的问题以显示您正在讨论的是什么类型:是字符串还是整数。也请说出你的尝试。另请阅读[如何提问](http://stackoverflow.com/questions/how-to-ask) – 2012-04-05 06:49:34

回答

0

虽然我更喜欢@ keety的回答,但还有其他方法。 ü可以使用字符串流:

为如:

#include <sstream> 

int i = 5; 
std::string s; 
std::stringstream out; 
out << i; 
s = out.str(); 

后你这么有你的字符串作为一个字符串varaible YYYYMMDDsubstr(4,2)将是你的月份。 您可以稍后使用strtol转换回整数。

+0

:我得到的东西,并与其他假设我有ÿ糊涂了,d,m作为三个字符串流,并将所有这些连接到另一个字符串作为“date = y + m + d;”,然后将其转换为整数作为返回atoi(date.c_str()); 那么我怎么现在从它substr现在已经是一个整数 – gandhigcpp 2012-04-05 05:43:55

+0

和代码看起来像int mm = date.substr(4,2);其中日期返回为一个整数。 – gandhigcpp 2012-04-05 05:49:07

0

如果它们总是在格式YYYYMMDD,则取在[4]长度2.

+0

:你可以告诉代码plsss的形式... – gandhigcpp 2012-04-05 05:20:35

+0

他们的格式是YYYYMMDD然而这是一个整数而不是字符串 – gandhigcpp 2012-04-05 05:22:35

+0

@gandhigcpp:然后忽略我的答案并使用keety's。我会在几个小时内删除我的。 – wallyk 2012-04-05 05:29:12

3

子字符串,因为它是int类型使用int mm=(yyyymmdd/100)%100

+0

@keely:它在做什么“int mm =(yyyymmdd/100) %100“ – gandhigcpp 2012-04-05 05:23:50

+0

@gandhigcpp'yyyymmdd/100'会提取yyyymm,然后通过mod运算符'yyyymm%100'继续提取mm部分 – keety 2012-04-05 05:26:38

+0

@keealy:正如我讨论的那样,是这样的 date = y + m + d; //这里是一个字符串 return atoi(date.c_str()); //将整数返回给函数 – gandhigcpp 2012-04-05 05:27:20