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;
}
Beispiel #2
0
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");
}
Beispiel #5
0
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;
}
Beispiel #6
0
/*--------------------------------------------------------------------------
 *
 * 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;
}