为什么COleDateTime 格式时间 转 struct tm 结构时间会增加一个月 ?
void CO2TDlg::OnButton1()
{
struct tm tmChange;
COleDateTime rhs; time_t aclock;
time( &aclock ); /* Get time in seconds */
rhs = COleDateTime(aclock);
//aclock=1037765859,时间为 2002/11/20 12:17:39 tmChange.tm_year = rhs.GetYear() - 1900;
tmChange.tm_mon = rhs.GetMonth();
tmChange.tm_mday = rhs.GetDay();
tmChange.tm_hour = rhs.GetHour();
tmChange.tm_min = rhs.GetMinute();
tmChange.tm_sec = rhs.GetSecond();
//tmChange 为 2002/11/20 12:17:39 (北京时间)
time_t ttm = mktime(&tmChange);
//ttm =1040357859 时间加了一个月(理论上应该为1037765859=aclock)
int i1= tmChange.tm_year ;
int i2= tmChange.tm_mon;
int i3= tmChange.tm_mday ;
int i4= tmChange.tm_hour;
int i5= tmChange.tm_min ;
int i6= tmChange.tm_sec;
//tmChange 还是为 2002/11/20 12:17:39 tmChange = * gmtime(&ttm);
//tmChange 为 2002/11/20 4:17:39 (格林时间) int i11= tmChange.tm_year ;
int i12= tmChange.tm_mon;
int i13= tmChange.tm_mday ;
int i14= tmChange.tm_hour;
int i15= tmChange.tm_min ;
int i16= tmChange.tm_sec;
ttm = mktime(&tmChange);
//ttm 还是1040357859,没有增加一个月(减了几小时间因为格林时间)
tmChange = * gmtime(&ttm);
ttm = mktime(&tmChange);
//ttm 还是1040300259,没有增加一个月(减了几小时间因为格林时间)
}
void CO2TDlg::OnButton1()
{
struct tm tmChange;
COleDateTime rhs; time_t aclock;
time( &aclock ); /* Get time in seconds */
rhs = COleDateTime(aclock);
//aclock=1037765859,时间为 2002/11/20 12:17:39 tmChange.tm_year = rhs.GetYear() - 1900;
tmChange.tm_mon = rhs.GetMonth();
tmChange.tm_mday = rhs.GetDay();
tmChange.tm_hour = rhs.GetHour();
tmChange.tm_min = rhs.GetMinute();
tmChange.tm_sec = rhs.GetSecond();
//tmChange 为 2002/11/20 12:17:39 (北京时间)
time_t ttm = mktime(&tmChange);
//ttm =1040357859 时间加了一个月(理论上应该为1037765859=aclock)
int i1= tmChange.tm_year ;
int i2= tmChange.tm_mon;
int i3= tmChange.tm_mday ;
int i4= tmChange.tm_hour;
int i5= tmChange.tm_min ;
int i6= tmChange.tm_sec;
//tmChange 还是为 2002/11/20 12:17:39 tmChange = * gmtime(&ttm);
//tmChange 为 2002/11/20 4:17:39 (格林时间) int i11= tmChange.tm_year ;
int i12= tmChange.tm_mon;
int i13= tmChange.tm_mday ;
int i14= tmChange.tm_hour;
int i15= tmChange.tm_min ;
int i16= tmChange.tm_sec;
ttm = mktime(&tmChange);
//ttm 还是1040357859,没有增加一个月(减了几小时间因为格林时间)
tmChange = * gmtime(&ttm);
ttm = mktime(&tmChange);
//ttm 还是1040300259,没有增加一个月(减了几小时间因为格林时间)
}
解决方案 »
- windows消息分哪几种?特点是什么?
- 用cmd使用makefile的问题。。。
- 这段代码是VB的,能不能帮忙翻译成VC的?
- 想要一段占有cpu时间很大的很大的死循环代码,像死机一样,谢谢!!!
- 派生自Cwnd的一个类(做一个自定义控件)怎样在初始时后隐藏?
- res文件夹下的.rc2文件
- 编一个截获网络中数据包的程序,出现下面的提示如何解决?
- 请问:如何同时使用stl的stack和打开读写文件?
- 吼~~~~~~~~~~~;为什么我的UDP端口绑定5000以上的端口,不能select到数据;【有代码】
- 求教,关于CEdit的自定义颜色和显示行数
- 添加SCROLLBAR的问题??
- 请问哪位大虾做过mpeg文件的播放器阿,求教
而且mktime()、gmtime()多次后,月份就不变了