ExtDateTime parsePlanckDate(const QString& dateString) { QStringList secondSplit = QStringList::split('.', dateString); if (secondSplit.isEmpty() || secondSplit.count() > 2) { return ExtDateTime(); } int seconds = 0; if (secondSplit.count() > 1) { seconds = secondSplit[1].toUInt(); } QStringList mainSplit = QStringList::split(':', secondSplit[0]); ExtDateTime edt = ExtDateTime::currentDateTime(); int offset = ExtDateTime::currentDateTime(Qt::UTC).toTime_t() - edt.toTime_t(); ExtDate d = edt.date(); QTime t = edt.time(); int i = 0; switch (mainSplit.count()) { default: return ExtDateTime(); case 5: { int years = mainSplit[i++].toInt(); if (years < 100) { if (years < 0) { years = 1970 - years; } else { years += 2000; } } d.setYMD(years, d.month(), d.day()); } case 4: { unsigned month = mainSplit[i++].toUInt(); d.setYMD(d.year(), month, d.day()); } case 3: { unsigned day = mainSplit[i++].toInt(); d.setYMD(d.year(), d.month(), day); } edt.setDate(d); case 2: { unsigned hour = mainSplit[i++].toInt(); t.setHMS(hour, t.minute(), t.second()); } case 1: { unsigned minute = mainSplit[i].toInt(); t.setHMS(t.hour(), minute, t.second()); } case 0: t.setHMS(t.hour(), t.minute(), seconds); edt.setTime(t); break; } return edt.addSecs(-offset); }
void ExtDatePicker::dateChangedSlot(const ExtDate &date) { kdDebug(298) << "ExtDatePicker::dateChangedSlot: date changed (" << date.year() << "/" << date.month() << "/" << date.day() << ")." << endl; //must remain commented unless ExtDate gets added to kdelibs // const ExtCalendarSystem * calendar = KGlobal::locale()->calendar(); // line->setText(KGlobal::locale()->formatDate(date, true)); line->setText( date.toString( KGlobal::locale()->dateFormatShort() ) ); selectMonth->setText(d->calendar->monthName(date, false)); fillWeeksCombo(date); // calculate the item num in the week combo box; normalize selected day so as if 1.1. is the first day of the week ExtDate firstDay(date.year(), 1, 1); d->selectWeek->setCurrentItem((d->calendar->dayOfYear(date) + d->calendar->dayOfWeek(firstDay) - 2) / 7/*calendar->daysInWeek()*/); selectYear->setText(d->calendar->yearString(date, false)); emit(dateChanged(date)); }