获得四天前的日期。

w78z 2004-08-08 02:33:40
求教。
怎样获得四天前的日期格式为yyyy--mm-dd
应该有个算法的吧。
并如何把得到的日期写到CString ls_time; 或者char *ls_time里去呢?
谢谢了
...全文
76 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Kudeet 2004-08-08
CTime time = CTime::GetCurrentTime();
int day=time.GetDay()-4;
COleDateTime time1(time.GetYear(),time.GetMonth(),day,time.GetHour(),time.GetMinute(),time.GetSecond());

如何把得到的日期写到CString ls_time;
-------------------------------------
CString str;
CTime t = CTime::GetCurrentTime();
str.Format("%d-%d-%d",t.GetYear(),t.GetMonth(),t.GetDay());

CString strTime;
CTime tTime = CTime::GetCurrentTime();
strTime = tTime.Format("%Y-%m-%d %H:%M:%S");
回复
w78z 2004-08-08
自己顶~~
回复
superhandsome 2004-08-08
笨了点,你可以把它做成函数。
回复
superhandsome 2004-08-08
CTime time = CTime::GetCurrentTime();

year = time.GetYear();
month = time.GetMonth();
day = time.GetDay();

if (day >4)
day = day -4;
else
{
// int leap=year%4==0&&year%100||year%400;
switch(month)
{
case 2:
case 4:
case 6:
case 8:
case 9:
case 11:
day = day + 27;
break;
case 5:
case 7:
case 10:
case 12:
day = day + 26;
break;
case 3:
if (year%4==0&&year%100||year%400)
{
day = day + 24;
break;
}
day = day + 26;
break;
case 1:
year = year -1;
month = 12;
day = day + 27;
break;
default:
break;
}

}
CString time;
time.Format(%04d-%02d-%02d"),gs_year,gs_month,gs_day)
回复
lianglp 2004-08-08
CTimeSpan timeSpan(4*60*60*24)//四天的秒数
CTime curTime = CTime::GetCururentTime() ;
curTime -= timeSpan;//得到四天前的时间
CString strTime ;
strTime.Format("%d年%d月%d日",curTime.Getyear(),curTime.getmonths(),curTime.GetDays()) ;
回复
Kudeet 2004-08-08
指出了错误,给你看一个加月分的函数,可以参考一下。
void DataAddMonth(COleDateTime & date,int iMonth)
{
COleDateTime DtSave(date);
UINT nYear = DtSave.GetYear();
UINT nMonth = DtSave.GetMonth();
UINT nDay = DtSave.GetDay();

int iY = iMonth/12;
int iTmp = iMonth % 12;

nYear += iY;

if(iTmp > 0) // 加
{
int iAllM = iTmp + nMonth;
if(iAllM > 12)
{
nYear ++;
nMonth = iAllM - 12;
}
else
nMonth = iAllM;
}
if(iTmp < 0) // 减
{
if(abs(iTmp) < nMonth)
nMonth += iTmp;
else
{
nYear--;
nMonth += 12;
nMonth += iTmp;
}
}
UINT nNextM = nMonth + 1;
COleDateTime DtNext(nYear,nNextM,1,0,0,0);
COleDateTimeSpan DtSp(1);
DtNext -= DtSp;
if(nDay > DtNext.GetDay()) nDay = DtNext.GetDay();
date = COleDateTime(nYear,nMonth,nDay,date.GetHour(),date.GetMinute(),date.GetSecond());
}
回复
superhandsome 2004-08-08
int day=time.GetDay()-4;
如果是2004-8-2号呢?
那不是负2了?
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-08-08 02:33
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……