QString Stringify::formatTime( const KDateTime &dt, bool shortfmt, const KDateTime::Spec &spec ) { if ( spec.isValid() ) { QString timeZone; if ( spec.timeZone() != KSystemTimeZones::local() ) { timeZone = ' ' + spec.timeZone().name(); } return KGlobal::locale()->formatTime( dt.toTimeSpec( spec ).time(), !shortfmt ) + timeZone; } else { return KGlobal::locale()->formatTime( dt.time(), !shortfmt ); } }
QString Todo::dtStartTimeStr( bool shortfmt, bool first, const KDateTime::Spec &spec ) const { if ( spec.isValid() ) { QString timeZone; if ( spec.timeZone() != KSystemTimeZones::local() ) { timeZone = ' ' + spec.timeZone().name(); } return KGlobal::locale()->formatTime( dtStart( first ).toTimeSpec( spec ).time(), !shortfmt ) + timeZone; } else { return KGlobal::locale()->formatTime( dtStart( first ).time(), !shortfmt ); } }
QString Todo::dtDueDateStr( bool shortfmt, const KDateTime::Spec &spec ) const { if ( spec.isValid() ) { QString timeZone; if ( spec.timeZone() != KSystemTimeZones::local() ) { timeZone = ' ' + spec.timeZone().name(); } return KGlobal::locale()->formatDate( dtDue( !recurs() ).toTimeSpec( spec ).date(), ( shortfmt ? KLocale::ShortDate : KLocale::LongDate ) ) + timeZone; } else { return KGlobal::locale()->formatDate( dtDue( !recurs() ).date(), ( shortfmt ? KLocale::ShortDate : KLocale::LongDate ) ); } }
QString Todo::dtStartStr( bool shortfmt, const KDateTime::Spec &spec ) const { if ( allDay() ) { return IncidenceFormatter::dateToString( dtStart(), shortfmt, spec ); } if ( spec.isValid() ) { QString timeZone; if ( spec.timeZone() != KSystemTimeZones::local() ) { timeZone = ' ' + spec.timeZone().name(); } return KGlobal::locale()->formatDateTime( dtStart().toTimeSpec( spec ).dateTime(), ( shortfmt ? KLocale::ShortDate : KLocale::LongDate ) ) + timeZone; } else { return KGlobal::locale()->formatDateTime( dtStart().dateTime(), ( shortfmt ? KLocale::ShortDate : KLocale::LongDate ) ); } }
QString Stringify::formatDateTime( const KDateTime &dt, bool allDay, bool shortfmt, const KDateTime::Spec &spec ) { if ( allDay ) { return formatDate( dt, shortfmt, spec ); } if ( spec.isValid() ) { QString timeZone; if ( spec.timeZone() != KSystemTimeZones::local() ) { timeZone = ' ' + spec.timeZone().name(); } return KGlobal::locale()->formatDateTime( dt.toTimeSpec( spec ).dateTime(), ( shortfmt ? KLocale::ShortDate : KLocale::LongDate ) ) + timeZone; } else { return KGlobal::locale()->formatDateTime( dt.dateTime(), ( shortfmt ? KLocale::ShortDate : KLocale::LongDate ) ); } }
static KDateTime VEventDateTimeToKDateTime(const QString &s, KDateTime::Spec &tz) { kDebug(30015) << "top... tz.offset:" << tz.timeZone().currentOffset(); if (s.endsWith('Z')) { tz = KSystemTimeZones::zone("UTC"); kDebug(30015) << "tz.offset:" << tz.timeZone().currentOffset(); kDebug(30015) << "new date string:" << s; } KDateTime ret = KDateTime::fromString(s, "yyyyMMddTHHmmss"); if (!ret.isValid()) { // "2003-01-08T13:00:00" kDebug(30015) << "parsing dateThh:mm format...from input:" << s; ret = KDateTime::fromString(s, KDateTime::ISODate); } // // Parsed as UTC, must now adjust for given timezone // if (ret.isValid() && tz.timeZone().currentOffset()) { ret.setTimeSpec(tz); } // // convert to local tz for ease of editing. // ret = ret.toLocalZone(); tz = KSystemTimeZones::local(); kDebug(30015) << "date string:" << s << "\n" << " is valid:" << ret.isValid() << "\n" << " parsed:" << ret.toString() << "\n" << " time.tz.offset:" << ret.timeZone().currentOffset() << " tz.offset:" << tz.timeZone().currentOffset(); return ret; }
void KoRdfCalendarEvent::fromKEvent(KCalCore::Event::Ptr event) { m_dtstart = event->dtStart(); m_dtend = event->dtEnd(); m_summary = event->summary(); m_location = event->location(); m_uid = event->uid(); Soprano::Node n = Soprano::LiteralValue(m_dtstart.dateTime()); KDateTime::Spec tz = toKTimeZone(n); KDateTime roundTrip = VEventDateTimeToKDateTime(n.toString(), tz); kDebug(30015) << "summary:" << m_summary; kDebug(30015) << "location:" << m_location; kDebug(30015) << "uid:" << m_uid; kDebug(30015) << "dtstart:" << m_dtstart; kDebug(30015) << "dtstart.offset:" << m_dtstart.timeZone().currentOffset(); kDebug(30015) << "dtstart.utc:" << m_dtstart.toUtc(); kDebug(30015) << " local.offset:" << KSystemTimeZones::local().currentOffset(); kDebug(30015) << "dtstart.roundTrip:" << roundTrip; kDebug(30015) << "dtend:" << m_dtend; kDebug(30015) << "dtstart.rdfnode:" << n; kDebug(30015) << "dtstart.roundTrip.offset:" << tz.timeZone().currentOffset(); }