Russian Qt Forum

Qt => Общие вопросы => Тема начата: zoro86 от Март 17, 2010, 09:27



Название: как получить дату за три дня назад...?
Отправлено: zoro86 от Март 17, 2010, 09:27
на данный момент делаю через жопу...
вот так:
Код:
        QDate date;
QString vrmDateTo = date.currentDate().toString("yyyy-MM-dd");
QString vrmYearTo = date.currentDate().toString("yyyy");
QString vrmMounthTo = date.currentDate().toString("MM");
QString vrmDayTo = date.currentDate().toString("dd");

QString vrmDateFrom;
QString vrmYearFrom;
QString vrmMounthFrom;
QString vrmDayFrom;

int deyTo = vrmDayTo.toInt();
int mounthTo = vrmMounthTo.toInt();

int mounthFrom = vrmMounthTo.toInt();
int yearFrom = vrmYearTo.toInt();

int deyFrom = 0;
if (deyTo>=3){
deyFrom = deyTo - 2;
QString DeyFrom = QString("%1").arg(deyFrom);
int lenDeyFrom = DeyFrom.length();
if(lenDeyFrom==1){
vrmDayFrom = "0" + DeyFrom;
}
vrmYearFrom = vrmYearTo;
vrmMounthFrom = vrmMounthTo;
}else{
if(mounthTo>1){
mounthFrom --;
vrmMounthFrom = QString("%1").arg(vrmMounthFrom);
}else{
mounthFrom = 12;
yearFrom --;
vrmMounthFrom = QString("%1").arg(vrmMounthFrom);
vrmYearFrom = QString("%1").arg(yearFrom);
}
QDate dateFrom(yearFrom,mounthFrom,1);
int deyOfMounth = dateFrom.daysInMonth();

if(deyTo == 2){
vrmDayFrom = QString("%1").arg(deyOfMounth);
}else{
deyOfMounth --;
vrmDayFrom = QString("%1").arg(deyOfMounth);
}
if(mounthFrom < 10){
vrmMounthFrom = "0" + vrmMounthFrom;
}
}
vrmDateFrom = vrmYearFrom + "-" + vrmMounthFrom + "-" + vrmDayFrom;

if(Debuger) qDebug() << vrmDateFrom;
if(Debuger) qDebug() << vrmDateTo;

работате супер... мне тут в SQLLite таблицу надо обращатся и вытаскивать данные за последние три дня...
если сегодня число 2010-03-02 то за три дня он должно получаться 2010-02-28 поэтому и алгоритм слегка мудренный..


Название: Re: как получить дату за три дня назад...?
Отправлено: BRE от Март 17, 2010, 09:38
Посмотри на QDate::addDays:
Код
C++ (Qt)
       QDate date( 2010, 3, 2 );
       qDebug() << date << date.addDays( -2 );
 


Название: Re: как получить дату за три дня назад...?
Отправлено: zoro86 от Март 17, 2010, 09:43
Как говорится дурная голова башке покоя не дает... ;D
на самом деле
Цитировать
QDate QDate::addDays ( int ndays ) const
Returns a QDate object containing a date ndays later than the date of this object (or earlier if ndays is negative).

не обратил внимание на то что в скобках :'(