QString DateStringBuilder::getFullDate(const KDateTime &dateTime) { if (!dateTime.isValid() || dateTime.isNull()) { return QString(); } QString date; date.append(getDayName(dateTime)); date.append(", "); date.append(dateTime.toString("%e %B %Y")); return date; }
int main(int argc, char *argv[]) { int day = 0; int month = 0; int year = 0; if (argc == 2) { if (strcmp(argv[1], "-t") == EQUAL) { runTests(); } else { displayUsage(); } } else if (argc == 3) { if (strcmp(argv[1], "-l") == EQUAL) { year = atoi(argv[2]); printf("%d is ", year); if (!isLeapYear(year)) printf("not "); printf("a leap year.\n"); } else if (strcmp(argv[1], "-d") == EQUAL) { year = atoi(argv[2]); printf("The doomsday for %d is %s.\n", year, getDayName(getDoomsday(year))); } else { displayUsage(); } } else if (argc == 4) { day = atoi(argv[1]); month = atoi(argv[2]); year = atoi(argv[3]); printf("%d %d %d\n", day, month, year); printf("%s\n", getDayName(getDayOfWeek(day, month, year))); } else { displayUsage(); } return EXIT_SUCCESS; }
QString DateStringBuilder::getGroupedDate(const KDateTime &dateTime) { if (!dateTime.isValid() || dateTime.isNull()) { return QString(); } QDate currentDate = QDateTime::currentDateTime().date(); if (currentDate.weekNumber() == dateTime.date().weekNumber()) { //this week return getDayName(dateTime); } if (currentDate.addDays(-7).weekNumber() == dateTime.date().weekNumber()) { //last week return i18n("Last Week"); } if (currentDate.year() == dateTime.date().year()) { //this year return dateTime.toString("%B"); } return dateTime.toString("%B %Y"); }
QString DateStringBuilder::getShortDate(const KDateTime &dateTime) { if (!dateTime.isValid() || dateTime.isNull()) { return QString(); } QDate currentDate = QDateTime().currentDateTime().date(); if (currentDate.weekNumber() == dateTime.date().weekNumber() || currentDate.addDays(1) == dateTime.date()) { //this week or tomorrow (i.e. on sunday) return getDayName(dateTime); } if (currentDate.year() == dateTime.date().year()) { //this year //Micro optimization because this function showed up as hotspot static QCache<uint, QString> cache; uint hash = dateTime.date().month() ^ dateTime.date().day(); if (!cache.contains(hash)) { cache.insert(hash, new QString(dateTime.toString("%d.%m"))); } return *cache[hash]; } return dateTime.toString("%d.%m.%Y"); }
Date Date::getDateFromDays(long days) { long y = (10000*days + 14780)/3652425; long ddd = days - (365*y + y/4 - y/100 + y/400); if (ddd < 0) { y = y - 1; ddd = days - (365*y + y/4 - y/100 + y/400); } long mi = (100*ddd + 52)/3060; long mm = (mi + 2)%12 + 1; y = y + (mi + 2)/12 + 1900; long dd = ddd - (mi*306 + 5)/10 + 1; ////logger << y << " " << mm << " " << dd << endl; Date d; d.setDay(dd); d.setMonth(mm); d.setYear(y); d.setDayw(getHalfDayName(getDayName(dd,mm,y))); return d; }
/*-------------------------------------------------------------------------- * * Prints the date from a given date/time structure into a string unsign * a specific format. * * Arguments * --------- * - buffer : Pointer to the string to write to. * - format : Date format to use. * - date : Structure containing the date to print * * Returns : The day of week index from 1 to 7. (1=Sunday, 7=Saturday) */ uint8_t dateToBuf( char *buffer, uint8_t format, DateTime *date ) { uint8_t length; switch( format ) { case DATE_FORMAT_MMDDYYYY: length = sprintf_P( buffer, PSTR( "%02d/%02d/%d" ), date->month(), date->date(), date->year() ); break; case DATE_FORMAT_YYYYMMDD: length = sprintf_P( buffer, PSTR( "%d/%02d/%02d" ), date->year(), date->month(), date->date() ); break; case DATE_FORMAT_DDMMMYYYY: length = sprintf_P( buffer, PSTR( "%02d-%S-%d" ), date->date(), getMonthName( date->month(), true ), date->year() ); break; case DATE_FORMAT_MMMDDYYYY: length = sprintf_P( buffer, PSTR( "%S-%02d-%d" ), getMonthName( date->month(), true ), date->date(), date->year() ); break; case DATE_FORMAT_YYYYMMMDD: length = sprintf_P( buffer, PSTR( "%d-%S-%02d" ), date->year(), getMonthName( date->month(), true ), date->date() ); break; case DATE_FORMAT_WDMMMDD: length = sprintf_P( buffer, PSTR( "%S, %S %d" ), getDayName( date->dow(), true ), getMonthName( date->month(), true ), date->date() ); break; case DATE_FORMAT_WDMMMDDYYYY: length = sprintf_P( buffer, PSTR( "%S, %S %d %d" ), getDayName( date->dow(), true ), getMonthName( date->month(), true ), date->date(), date->year() ); break; /* DATE_FORMAT_DDMMYYYY */ default: length = sprintf_P( buffer, PSTR( "%02d/%02d/%d" ), date->date(), date->month(), date->year() ); break; } return length; }