kdecore: reimplement KTimeZone

simpler, cleaner and most importantly - thread-safe (more than the
previous implementation anyway).

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2023-07-22 02:29:37 +03:00
parent 199278af4a
commit f2f37377e3
26 changed files with 303 additions and 4174 deletions

View file

@ -1,7 +1,2 @@
include(CheckTypeSize)
check_type_size(time_t SIZEOF_TIME_T)
check_struct_has_member("struct tm" tm_zone time.h HAVE_STRUCT_TM_TM_ZONE)
check_struct_has_member("struct tm" tm_gmtoff time.h HAVE_TM_GMTOFF)

View file

@ -1,8 +1,3 @@
#cmakedefine SIZEOF_TIME_T ${SIZEOF_TIME_T}
/* Defined to 1 if you have a tm_gmtoff member in struct tm */
#cmakedefine HAVE_TM_GMTOFF 1
/* Defined to 1 if you have a tm_zone member in struct tm */
#cmakedefine HAVE_STRUCT_TM_TM_ZONE 1

View file

@ -102,15 +102,17 @@ static QList<float> splitZoneTabCoordinates(const QByteArray &zonetabcoordinates
return result;
}
class KSystemTimeZonesPrivate : public QObject, public KTimeZones
class KSystemTimeZonesPrivate : public QObject
{
Q_OBJECT
public:
KSystemTimeZonesPrivate();
KTimeZone findZone(const QString &name) const;
KTimeZoneList m_zones;
KTimeZone m_localtz;
QString m_zoneinfoDir;
KTimeZoneSource* m_tzfileSource;
private Q_SLOTS:
void update(const QString &path);
@ -120,12 +122,21 @@ private:
};
KSystemTimeZonesPrivate::KSystemTimeZonesPrivate()
: m_tzfileSource(nullptr),
m_watcher(nullptr)
: m_watcher(nullptr)
{
update(QString());
}
KTimeZone KSystemTimeZonesPrivate::findZone(const QString &name) const
{
foreach (const KTimeZone &zone, m_zones) {
if (zone.name() == name) {
return zone;
}
}
return KTimeZone();
}
void KSystemTimeZonesPrivate::update(const QString &path)
{
Q_UNUSED(path);
@ -141,10 +152,10 @@ void KSystemTimeZonesPrivate::update(const QString &path)
if (m_zoneinfoDir.isEmpty()) {
m_zoneinfoDir = zoneinfoDir();
}
delete m_tzfileSource;
m_tzfileSource = new KTimeZoneSource(m_zoneinfoDir);
KTimeZones::clear();
m_zones.clear();
// UTC is used as fallback, should be there in any case
m_zones.append(m_localtz);
const QString zonetab = m_zoneinfoDir + QLatin1String("/zone.tab");
QFile zonetabfile(zonetab);
@ -204,19 +215,18 @@ void KSystemTimeZonesPrivate::update(const QString &path)
}
const KTimeZone ktimezone(
m_tzfileSource,
QString::fromLatin1(zonename),
QString::fromLatin1(zonecode),
zonetabcoordinates.at(0), zonetabcoordinates.at(1),
QString::fromLatin1(zonecomment)
);
KTimeZones::add(ktimezone);
m_zones.append(ktimezone);
}
if (localtimeinfo.isSymLink()) {
const int zonediroffset = (m_zoneinfoDir.size() + 1);
const QString localtz = reallocaltime.mid(zonediroffset, reallocaltime.size() - zonediroffset);
m_localtz = KTimeZones::zone(localtz);
m_localtz = findZone(localtz);
#ifndef NDEBUG
kDebug() << "Zones update took" << updatetimer.elapsed() << "ms";
#endif
@ -233,11 +243,11 @@ void KSystemTimeZonesPrivate::update(const QString &path)
#else
const QByteArray localtz(tzname[t->tm_isdst]);
#endif
const KTimeZones::ZoneMap allzones = KTimeZones::zones();
KTimeZones::ZoneMap::const_iterator it = allzones.constBegin();
while (it != allzones.constEnd()) {
if (it.value().abbreviations().contains(localtz)) {
m_localtz = KTimeZones::zone(it.key());
KTimeZoneList::const_iterator it = m_zones.constBegin();
while (it != m_zones.constEnd()) {
const KTimeZone zone = *it;
if (zone.abbreviations().contains(localtz)) {
m_localtz = zone;
#ifndef NDEBUG
kDebug() << "Zones update took" << updatetimer.elapsed() << "ms";
#endif
@ -269,24 +279,14 @@ QString KSystemTimeZones::zoneinfoDir()
return s_systemzones->m_zoneinfoDir;
}
KTimeZones *KSystemTimeZones::timeZones()
const KTimeZoneList KSystemTimeZones::zones()
{
return s_systemzones;
}
KTimeZone KSystemTimeZones::readZone(const QString &name)
{
return KTimeZone(s_systemzones->m_tzfileSource, name);
}
const KTimeZones::ZoneMap KSystemTimeZones::zones()
{
return s_systemzones->zones();
return s_systemzones->m_zones;
}
KTimeZone KSystemTimeZones::zone(const QString &name)
{
return s_systemzones->zone(name);
return s_systemzones->findZone(name);
}
#include "ksystemtimezone.moc"

View file

@ -18,115 +18,68 @@
Boston, MA 02110-1301, USA.
*/
/** @file
* System time zone functions
* @author David Jarvie <djarvie@kde.org>.
* @author S.R.Haque <srhaque@iee.org>.
*/
#ifndef KSYSTEMTIMEZONE_H
#define KSYSTEMTIMEZONE_H
#include "ktimezone.h"
/**
* The KSystemTimeZones class represents the system time zone database, consisting
* of a collection of individual system time zone definitions, indexed by name.
* Each individual time zone is defined in a KTimeZone instance.
* The KSystemTimeZones class represents the system time zone database. Each individual time zone
* is defined in a KTimeZone instance.
*
* At initialisation, KSystemTimeZones on UNIX systems reads the zone.tab file
* to obtain the list of system time zones and creates a KTimeZone instance for
* each one.
* At initialisation, KSystemTimeZones on UNIX systems reads the zone.tab file to obtain the list
* of system time zones and creates a KTimeZone instance for each one.
*
* @note KSystemTimeZones gets the system's time zone configuration, including
* the current local system time zone and the location of zone.tab. If the local
* timezone cannot be determinted, KSystemTimeZones will only know about the UTC
* time zone.
* @note KSystemTimeZones gets the system's time zone configuration, including the current local
* system time zone and the location of zone.tab. If the local timezone cannot be determinted,
* KSystemTimeZones will only know about the UTC time zone.
*
* Note that KSystemTimeZones is not derived from KTimeZones, but instead contains
* a KTimeZones instance which holds the system time zone database. Convenience
* static methods are defined to access its data, or alternatively you can access
* the KTimeZones instance directly via the timeZones() method.
* Convenience static methods are defined to access its data, alternatively you can access the
* KTimeZone list instance directly via the zones() method.
*
* As an example, find the local time in Oman corresponding to the local system
* time of 12:15:00 on 13th November 1999:
* \code
* QDateTime sampleTime(QDate(1999,11,13), QTime(12,15,0), Qt::LocalTime);
* KTimeZone local = KSystemTimeZones::local();
* KTimeZone oman = KSystemTimeZones::zone("Asia/Muscat");
* QDateTime omaniTime = local.convert(oman, sampleTime);
* \endcode
*
* @short System time zone access
* @see KTimeZone, KTimeZones
* @see KTimeZone
* @ingroup timezones
* @author David Jarvie <djarvie@kde.org>.
* @author S.R.Haque <srhaque@iee.org>.
* @author Ivailo Monev <xakepa10@gmail.com>.
*/
class KDECORE_EXPORT KSystemTimeZones
{
public:
/**
* Returns the unique KTimeZones instance containing the system time zones
* collection. It is first created if it does not already exist.
* Returns all the system time zones.
*
* @return time zones.
* @return time zone list
*/
static KTimeZones *timeZones();
/**
* Returns all the time zones defined in this collection.
*
* @return time zone collection
*/
static const KTimeZones::ZoneMap zones();
static const KTimeZoneList zones();
/**
* Returns the time zone with the given name.
*
* The time zone definition is obtained using system library calls, and may
* not contain historical data. If you need historical time change data,
* use the potentially slower method readZone().
* The time zone instance is is a cached one.
*
* @param name name of time zone
* @return time zone (usually a KTimeZone instance), or invalid if not found
* @see readZone()
* @return time zone, or invalid KTimeZone instance if not found
* @see zones()
*/
static KTimeZone zone(const QString &name);
/**
* Returns the time zone with the given name, containing the full time zone
* definition read directly from the system time zone database. This may
* incur a higher overhead than zone(), but will provide whatever historical
* data the system holds.
*
* @param name name of time zone
* @return time zone (usually a KTimeZone instance), or invalid if not found
* @see zone()
*/
static KTimeZone readZone(const QString &name);
/**
* Returns the current local system time zone.
*
* The idea of this routine is to provide a robust lookup of the local time
* zone. On Unix systems, there are a variety of mechanisms for setting this
* information, and no well defined way of getting it. For example, if you
* set your time zone to "Europe/London", then the tzname[] maintained by
* tzset() typically returns { "GMT", "BST" }. The function of this routine
* is to actually return "Europe/London" (or rather, the corresponding
* KTimeZone).
* The idea of this routine is to provide a robust lookup of the local time zone. On Unix
* systems, there are a variety of mechanisms for setting this information, and no well defined
* way of getting it. For example, if you set your time zone to "Europe/London", then the
* tzname[] maintained by tzset() typically returns { "GMT", "BST" }. The function of this
* routine is to actually return "Europe/London" (or rather, the corresponding KTimeZone).
*
* Note that depending on how the system stores its current time zone, this
* routine may return a synonym of the expected time zone. For example,
* "Europe/London", "Europe/Guernsey" and some other time zones are all
* identical and there may be no way for the routine to distinguish which
* of these is the correct zone name from the user's point of view.
* Note that depending on how the system stores its current time zone, this routine may return
* a synonym of the expected time zone. For example, "Europe/London", "Europe/Guernsey" and
* some other time zones are all identical and there may be no way for the routine to
* distinguish which of these is the correct zone name from the user's point of view.
*
* @return local system time zone. If necessary, we will use a series of
* heuristics which end by returning UTC. We will never return NULL.
* Note that if UTC is returned as a default, it may not belong to the
* the collection returned by KSystemTimeZones::zones().
* @return local system time zone. We will never return invalid KTimeZone, the fallback is to
return the UTC time zone.
*/
static KTimeZone local();

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -1,288 +0,0 @@
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Fri Dec 13 20:45:52 1901 UTC = Fri Dec 13 21:45:52 1901 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sat Dec 14 20:45:52 1901 UTC = Sat Dec 14 21:45:52 1901 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Apr 30 21:59:59 1916 UTC = Sun Apr 30 22:59:59 1916 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Apr 30 22:00:00 1916 UTC = Mon May 1 00:00:00 1916 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sat Sep 30 22:59:59 1916 UTC = Sun Oct 1 00:59:59 1916 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sat Sep 30 23:00:00 1916 UTC = Sun Oct 1 00:00:00 1916 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Apr 16 00:59:59 1917 UTC = Mon Apr 16 01:59:59 1917 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Apr 16 01:00:00 1917 UTC = Mon Apr 16 03:00:00 1917 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Sep 17 00:59:59 1917 UTC = Mon Sep 17 02:59:59 1917 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Sep 17 01:00:00 1917 UTC = Mon Sep 17 02:00:00 1917 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Apr 15 00:59:59 1918 UTC = Mon Apr 15 01:59:59 1918 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Apr 15 01:00:00 1918 UTC = Mon Apr 15 03:00:00 1918 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Sep 16 00:59:59 1918 UTC = Mon Sep 16 02:59:59 1918 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Sep 16 01:00:00 1918 UTC = Mon Sep 16 02:00:00 1918 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Apr 1 00:59:59 1940 UTC = Mon Apr 1 01:59:59 1940 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Apr 1 01:00:00 1940 UTC = Mon Apr 1 03:00:00 1940 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Nov 2 00:59:59 1942 UTC = Mon Nov 2 02:59:59 1942 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Nov 2 01:00:00 1942 UTC = Mon Nov 2 02:00:00 1942 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Mar 29 00:59:59 1943 UTC = Mon Mar 29 01:59:59 1943 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Mar 29 01:00:00 1943 UTC = Mon Mar 29 03:00:00 1943 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Oct 4 00:59:59 1943 UTC = Mon Oct 4 02:59:59 1943 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Oct 4 01:00:00 1943 UTC = Mon Oct 4 02:00:00 1943 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Apr 3 00:59:59 1944 UTC = Mon Apr 3 01:59:59 1944 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Apr 3 01:00:00 1944 UTC = Mon Apr 3 03:00:00 1944 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Oct 2 00:59:59 1944 UTC = Mon Oct 2 02:59:59 1944 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Oct 2 01:00:00 1944 UTC = Mon Oct 2 02:00:00 1944 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Apr 2 00:59:59 1945 UTC = Mon Apr 2 01:59:59 1945 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Apr 2 01:00:00 1945 UTC = Mon Apr 2 03:00:00 1945 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Wed May 23 23:59:59 1945 UTC = Thu May 24 01:59:59 1945 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Thu May 24 00:00:00 1945 UTC = Thu May 24 03:00:00 1945 CEMT isdst=1 gmtoff=10800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 23 23:59:59 1945 UTC = Mon Sep 24 02:59:59 1945 CEMT isdst=1 gmtoff=10800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Sep 24 00:00:00 1945 UTC = Mon Sep 24 02:00:00 1945 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Nov 18 00:59:59 1945 UTC = Sun Nov 18 02:59:59 1945 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Nov 18 01:00:00 1945 UTC = Sun Nov 18 02:00:00 1945 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Apr 14 00:59:59 1946 UTC = Sun Apr 14 01:59:59 1946 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Apr 14 01:00:00 1946 UTC = Sun Apr 14 03:00:00 1946 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Oct 7 00:59:59 1946 UTC = Mon Oct 7 02:59:59 1946 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Oct 7 01:00:00 1946 UTC = Mon Oct 7 02:00:00 1946 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Apr 6 01:59:59 1947 UTC = Sun Apr 6 02:59:59 1947 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Apr 6 02:00:00 1947 UTC = Sun Apr 6 04:00:00 1947 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun May 11 00:59:59 1947 UTC = Sun May 11 02:59:59 1947 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun May 11 01:00:00 1947 UTC = Sun May 11 04:00:00 1947 CEMT isdst=1 gmtoff=10800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sat Jun 28 23:59:59 1947 UTC = Sun Jun 29 02:59:59 1947 CEMT isdst=1 gmtoff=10800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Jun 29 00:00:00 1947 UTC = Sun Jun 29 02:00:00 1947 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 5 00:59:59 1947 UTC = Sun Oct 5 02:59:59 1947 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 5 01:00:00 1947 UTC = Sun Oct 5 02:00:00 1947 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Apr 18 00:59:59 1948 UTC = Sun Apr 18 01:59:59 1948 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Apr 18 01:00:00 1948 UTC = Sun Apr 18 03:00:00 1948 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 3 00:59:59 1948 UTC = Sun Oct 3 02:59:59 1948 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 3 01:00:00 1948 UTC = Sun Oct 3 02:00:00 1948 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Apr 10 00:59:59 1949 UTC = Sun Apr 10 01:59:59 1949 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Apr 10 01:00:00 1949 UTC = Sun Apr 10 03:00:00 1949 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 2 00:59:59 1949 UTC = Sun Oct 2 02:59:59 1949 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 2 01:00:00 1949 UTC = Sun Oct 2 02:00:00 1949 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Apr 6 00:59:59 1980 UTC = Sun Apr 6 01:59:59 1980 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Apr 6 01:00:00 1980 UTC = Sun Apr 6 03:00:00 1980 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 28 00:59:59 1980 UTC = Sun Sep 28 02:59:59 1980 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 28 01:00:00 1980 UTC = Sun Sep 28 02:00:00 1980 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 29 00:59:59 1981 UTC = Sun Mar 29 01:59:59 1981 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 29 01:00:00 1981 UTC = Sun Mar 29 03:00:00 1981 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 27 00:59:59 1981 UTC = Sun Sep 27 02:59:59 1981 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 27 01:00:00 1981 UTC = Sun Sep 27 02:00:00 1981 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 28 00:59:59 1982 UTC = Sun Mar 28 01:59:59 1982 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 28 01:00:00 1982 UTC = Sun Mar 28 03:00:00 1982 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 26 00:59:59 1982 UTC = Sun Sep 26 02:59:59 1982 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 26 01:00:00 1982 UTC = Sun Sep 26 02:00:00 1982 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 27 00:59:59 1983 UTC = Sun Mar 27 01:59:59 1983 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 27 01:00:00 1983 UTC = Sun Mar 27 03:00:00 1983 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 25 00:59:59 1983 UTC = Sun Sep 25 02:59:59 1983 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 25 01:00:00 1983 UTC = Sun Sep 25 02:00:00 1983 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 25 00:59:59 1984 UTC = Sun Mar 25 01:59:59 1984 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 25 01:00:00 1984 UTC = Sun Mar 25 03:00:00 1984 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 30 00:59:59 1984 UTC = Sun Sep 30 02:59:59 1984 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 30 01:00:00 1984 UTC = Sun Sep 30 02:00:00 1984 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 31 00:59:59 1985 UTC = Sun Mar 31 01:59:59 1985 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 31 01:00:00 1985 UTC = Sun Mar 31 03:00:00 1985 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 29 00:59:59 1985 UTC = Sun Sep 29 02:59:59 1985 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 29 01:00:00 1985 UTC = Sun Sep 29 02:00:00 1985 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 30 00:59:59 1986 UTC = Sun Mar 30 01:59:59 1986 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 30 01:00:00 1986 UTC = Sun Mar 30 03:00:00 1986 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 28 00:59:59 1986 UTC = Sun Sep 28 02:59:59 1986 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 28 01:00:00 1986 UTC = Sun Sep 28 02:00:00 1986 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 29 00:59:59 1987 UTC = Sun Mar 29 01:59:59 1987 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 29 01:00:00 1987 UTC = Sun Mar 29 03:00:00 1987 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 27 00:59:59 1987 UTC = Sun Sep 27 02:59:59 1987 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 27 01:00:00 1987 UTC = Sun Sep 27 02:00:00 1987 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 27 00:59:59 1988 UTC = Sun Mar 27 01:59:59 1988 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 27 01:00:00 1988 UTC = Sun Mar 27 03:00:00 1988 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 25 00:59:59 1988 UTC = Sun Sep 25 02:59:59 1988 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 25 01:00:00 1988 UTC = Sun Sep 25 02:00:00 1988 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 26 00:59:59 1989 UTC = Sun Mar 26 01:59:59 1989 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 26 01:00:00 1989 UTC = Sun Mar 26 03:00:00 1989 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 24 00:59:59 1989 UTC = Sun Sep 24 02:59:59 1989 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 24 01:00:00 1989 UTC = Sun Sep 24 02:00:00 1989 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 25 00:59:59 1990 UTC = Sun Mar 25 01:59:59 1990 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 25 01:00:00 1990 UTC = Sun Mar 25 03:00:00 1990 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 30 00:59:59 1990 UTC = Sun Sep 30 02:59:59 1990 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 30 01:00:00 1990 UTC = Sun Sep 30 02:00:00 1990 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 31 00:59:59 1991 UTC = Sun Mar 31 01:59:59 1991 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 31 01:00:00 1991 UTC = Sun Mar 31 03:00:00 1991 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 29 00:59:59 1991 UTC = Sun Sep 29 02:59:59 1991 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 29 01:00:00 1991 UTC = Sun Sep 29 02:00:00 1991 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 29 00:59:59 1992 UTC = Sun Mar 29 01:59:59 1992 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 29 01:00:00 1992 UTC = Sun Mar 29 03:00:00 1992 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 27 00:59:59 1992 UTC = Sun Sep 27 02:59:59 1992 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 27 01:00:00 1992 UTC = Sun Sep 27 02:00:00 1992 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 28 00:59:59 1993 UTC = Sun Mar 28 01:59:59 1993 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 28 01:00:00 1993 UTC = Sun Mar 28 03:00:00 1993 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 26 00:59:59 1993 UTC = Sun Sep 26 02:59:59 1993 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 26 01:00:00 1993 UTC = Sun Sep 26 02:00:00 1993 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 27 00:59:59 1994 UTC = Sun Mar 27 01:59:59 1994 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 27 01:00:00 1994 UTC = Sun Mar 27 03:00:00 1994 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 25 00:59:59 1994 UTC = Sun Sep 25 02:59:59 1994 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 25 01:00:00 1994 UTC = Sun Sep 25 02:00:00 1994 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 26 00:59:59 1995 UTC = Sun Mar 26 01:59:59 1995 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 26 01:00:00 1995 UTC = Sun Mar 26 03:00:00 1995 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 24 00:59:59 1995 UTC = Sun Sep 24 02:59:59 1995 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Sep 24 01:00:00 1995 UTC = Sun Sep 24 02:00:00 1995 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 31 00:59:59 1996 UTC = Sun Mar 31 01:59:59 1996 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 31 01:00:00 1996 UTC = Sun Mar 31 03:00:00 1996 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 27 00:59:59 1996 UTC = Sun Oct 27 02:59:59 1996 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 27 01:00:00 1996 UTC = Sun Oct 27 02:00:00 1996 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 30 00:59:59 1997 UTC = Sun Mar 30 01:59:59 1997 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 30 01:00:00 1997 UTC = Sun Mar 30 03:00:00 1997 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 26 00:59:59 1997 UTC = Sun Oct 26 02:59:59 1997 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 26 01:00:00 1997 UTC = Sun Oct 26 02:00:00 1997 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 29 00:59:59 1998 UTC = Sun Mar 29 01:59:59 1998 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 29 01:00:00 1998 UTC = Sun Mar 29 03:00:00 1998 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 25 00:59:59 1998 UTC = Sun Oct 25 02:59:59 1998 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 25 01:00:00 1998 UTC = Sun Oct 25 02:00:00 1998 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 28 00:59:59 1999 UTC = Sun Mar 28 01:59:59 1999 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 28 01:00:00 1999 UTC = Sun Mar 28 03:00:00 1999 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 31 00:59:59 1999 UTC = Sun Oct 31 02:59:59 1999 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 31 01:00:00 1999 UTC = Sun Oct 31 02:00:00 1999 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 26 00:59:59 2000 UTC = Sun Mar 26 01:59:59 2000 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 26 01:00:00 2000 UTC = Sun Mar 26 03:00:00 2000 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 29 00:59:59 2000 UTC = Sun Oct 29 02:59:59 2000 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 29 01:00:00 2000 UTC = Sun Oct 29 02:00:00 2000 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 25 00:59:59 2001 UTC = Sun Mar 25 01:59:59 2001 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 25 01:00:00 2001 UTC = Sun Mar 25 03:00:00 2001 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 28 00:59:59 2001 UTC = Sun Oct 28 02:59:59 2001 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 28 01:00:00 2001 UTC = Sun Oct 28 02:00:00 2001 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 31 00:59:59 2002 UTC = Sun Mar 31 01:59:59 2002 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 31 01:00:00 2002 UTC = Sun Mar 31 03:00:00 2002 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 27 00:59:59 2002 UTC = Sun Oct 27 02:59:59 2002 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 27 01:00:00 2002 UTC = Sun Oct 27 02:00:00 2002 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 30 00:59:59 2003 UTC = Sun Mar 30 01:59:59 2003 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 30 01:00:00 2003 UTC = Sun Mar 30 03:00:00 2003 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 26 00:59:59 2003 UTC = Sun Oct 26 02:59:59 2003 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 26 01:00:00 2003 UTC = Sun Oct 26 02:00:00 2003 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 28 00:59:59 2004 UTC = Sun Mar 28 01:59:59 2004 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 28 01:00:00 2004 UTC = Sun Mar 28 03:00:00 2004 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 31 00:59:59 2004 UTC = Sun Oct 31 02:59:59 2004 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 31 01:00:00 2004 UTC = Sun Oct 31 02:00:00 2004 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 27 00:59:59 2005 UTC = Sun Mar 27 01:59:59 2005 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 27 01:00:00 2005 UTC = Sun Mar 27 03:00:00 2005 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 30 00:59:59 2005 UTC = Sun Oct 30 02:59:59 2005 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 30 01:00:00 2005 UTC = Sun Oct 30 02:00:00 2005 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 26 00:59:59 2006 UTC = Sun Mar 26 01:59:59 2006 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 26 01:00:00 2006 UTC = Sun Mar 26 03:00:00 2006 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 29 00:59:59 2006 UTC = Sun Oct 29 02:59:59 2006 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 29 01:00:00 2006 UTC = Sun Oct 29 02:00:00 2006 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 25 00:59:59 2007 UTC = Sun Mar 25 01:59:59 2007 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 25 01:00:00 2007 UTC = Sun Mar 25 03:00:00 2007 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 28 00:59:59 2007 UTC = Sun Oct 28 02:59:59 2007 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 28 01:00:00 2007 UTC = Sun Oct 28 02:00:00 2007 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 30 00:59:59 2008 UTC = Sun Mar 30 01:59:59 2008 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 30 01:00:00 2008 UTC = Sun Mar 30 03:00:00 2008 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 26 00:59:59 2008 UTC = Sun Oct 26 02:59:59 2008 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 26 01:00:00 2008 UTC = Sun Oct 26 02:00:00 2008 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 29 00:59:59 2009 UTC = Sun Mar 29 01:59:59 2009 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 29 01:00:00 2009 UTC = Sun Mar 29 03:00:00 2009 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 25 00:59:59 2009 UTC = Sun Oct 25 02:59:59 2009 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 25 01:00:00 2009 UTC = Sun Oct 25 02:00:00 2009 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 28 00:59:59 2010 UTC = Sun Mar 28 01:59:59 2010 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 28 01:00:00 2010 UTC = Sun Mar 28 03:00:00 2010 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 31 00:59:59 2010 UTC = Sun Oct 31 02:59:59 2010 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 31 01:00:00 2010 UTC = Sun Oct 31 02:00:00 2010 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 27 00:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 27 01:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 30 00:59:59 2011 UTC = Sun Oct 30 02:59:59 2011 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 30 01:00:00 2011 UTC = Sun Oct 30 02:00:00 2011 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 25 00:59:59 2012 UTC = Sun Mar 25 01:59:59 2012 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 25 01:00:00 2012 UTC = Sun Mar 25 03:00:00 2012 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 28 00:59:59 2012 UTC = Sun Oct 28 02:59:59 2012 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 28 01:00:00 2012 UTC = Sun Oct 28 02:00:00 2012 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 31 00:59:59 2013 UTC = Sun Mar 31 01:59:59 2013 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 31 01:00:00 2013 UTC = Sun Mar 31 03:00:00 2013 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 27 00:59:59 2013 UTC = Sun Oct 27 02:59:59 2013 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 27 01:00:00 2013 UTC = Sun Oct 27 02:00:00 2013 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 30 00:59:59 2014 UTC = Sun Mar 30 01:59:59 2014 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 30 01:00:00 2014 UTC = Sun Mar 30 03:00:00 2014 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 26 00:59:59 2014 UTC = Sun Oct 26 02:59:59 2014 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 26 01:00:00 2014 UTC = Sun Oct 26 02:00:00 2014 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 29 00:59:59 2015 UTC = Sun Mar 29 01:59:59 2015 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 29 01:00:00 2015 UTC = Sun Mar 29 03:00:00 2015 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 25 00:59:59 2015 UTC = Sun Oct 25 02:59:59 2015 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 25 01:00:00 2015 UTC = Sun Oct 25 02:00:00 2015 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 27 00:59:59 2016 UTC = Sun Mar 27 01:59:59 2016 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 27 01:00:00 2016 UTC = Sun Mar 27 03:00:00 2016 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 30 00:59:59 2016 UTC = Sun Oct 30 02:59:59 2016 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 30 01:00:00 2016 UTC = Sun Oct 30 02:00:00 2016 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 26 00:59:59 2017 UTC = Sun Mar 26 01:59:59 2017 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 26 01:00:00 2017 UTC = Sun Mar 26 03:00:00 2017 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 29 00:59:59 2017 UTC = Sun Oct 29 02:59:59 2017 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 29 01:00:00 2017 UTC = Sun Oct 29 02:00:00 2017 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 25 00:59:59 2018 UTC = Sun Mar 25 01:59:59 2018 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 25 01:00:00 2018 UTC = Sun Mar 25 03:00:00 2018 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 28 00:59:59 2018 UTC = Sun Oct 28 02:59:59 2018 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 28 01:00:00 2018 UTC = Sun Oct 28 02:00:00 2018 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 31 00:59:59 2019 UTC = Sun Mar 31 01:59:59 2019 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 31 01:00:00 2019 UTC = Sun Mar 31 03:00:00 2019 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 27 00:59:59 2019 UTC = Sun Oct 27 02:59:59 2019 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 27 01:00:00 2019 UTC = Sun Oct 27 02:00:00 2019 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 29 00:59:59 2020 UTC = Sun Mar 29 01:59:59 2020 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 29 01:00:00 2020 UTC = Sun Mar 29 03:00:00 2020 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 25 00:59:59 2020 UTC = Sun Oct 25 02:59:59 2020 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 25 01:00:00 2020 UTC = Sun Oct 25 02:00:00 2020 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 28 00:59:59 2021 UTC = Sun Mar 28 01:59:59 2021 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 28 01:00:00 2021 UTC = Sun Mar 28 03:00:00 2021 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 31 00:59:59 2021 UTC = Sun Oct 31 02:59:59 2021 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 31 01:00:00 2021 UTC = Sun Oct 31 02:00:00 2021 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 27 00:59:59 2022 UTC = Sun Mar 27 01:59:59 2022 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 27 01:00:00 2022 UTC = Sun Mar 27 03:00:00 2022 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 30 00:59:59 2022 UTC = Sun Oct 30 02:59:59 2022 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 30 01:00:00 2022 UTC = Sun Oct 30 02:00:00 2022 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 26 00:59:59 2023 UTC = Sun Mar 26 01:59:59 2023 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 26 01:00:00 2023 UTC = Sun Mar 26 03:00:00 2023 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 29 00:59:59 2023 UTC = Sun Oct 29 02:59:59 2023 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 29 01:00:00 2023 UTC = Sun Oct 29 02:00:00 2023 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 31 00:59:59 2024 UTC = Sun Mar 31 01:59:59 2024 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 31 01:00:00 2024 UTC = Sun Mar 31 03:00:00 2024 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 27 00:59:59 2024 UTC = Sun Oct 27 02:59:59 2024 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 27 01:00:00 2024 UTC = Sun Oct 27 02:00:00 2024 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 30 00:59:59 2025 UTC = Sun Mar 30 01:59:59 2025 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 30 01:00:00 2025 UTC = Sun Mar 30 03:00:00 2025 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 26 00:59:59 2025 UTC = Sun Oct 26 02:59:59 2025 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 26 01:00:00 2025 UTC = Sun Oct 26 02:00:00 2025 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 29 00:59:59 2026 UTC = Sun Mar 29 01:59:59 2026 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 29 01:00:00 2026 UTC = Sun Mar 29 03:00:00 2026 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 25 00:59:59 2026 UTC = Sun Oct 25 02:59:59 2026 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 25 01:00:00 2026 UTC = Sun Oct 25 02:00:00 2026 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 28 00:59:59 2027 UTC = Sun Mar 28 01:59:59 2027 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 28 01:00:00 2027 UTC = Sun Mar 28 03:00:00 2027 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 31 00:59:59 2027 UTC = Sun Oct 31 02:59:59 2027 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 31 01:00:00 2027 UTC = Sun Oct 31 02:00:00 2027 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 26 00:59:59 2028 UTC = Sun Mar 26 01:59:59 2028 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 26 01:00:00 2028 UTC = Sun Mar 26 03:00:00 2028 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 29 00:59:59 2028 UTC = Sun Oct 29 02:59:59 2028 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 29 01:00:00 2028 UTC = Sun Oct 29 02:00:00 2028 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 25 00:59:59 2029 UTC = Sun Mar 25 01:59:59 2029 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 25 01:00:00 2029 UTC = Sun Mar 25 03:00:00 2029 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 28 00:59:59 2029 UTC = Sun Oct 28 02:59:59 2029 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 28 01:00:00 2029 UTC = Sun Oct 28 02:00:00 2029 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 31 00:59:59 2030 UTC = Sun Mar 31 01:59:59 2030 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 31 01:00:00 2030 UTC = Sun Mar 31 03:00:00 2030 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 27 00:59:59 2030 UTC = Sun Oct 27 02:59:59 2030 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 27 01:00:00 2030 UTC = Sun Oct 27 02:00:00 2030 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 30 00:59:59 2031 UTC = Sun Mar 30 01:59:59 2031 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 30 01:00:00 2031 UTC = Sun Mar 30 03:00:00 2031 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 26 00:59:59 2031 UTC = Sun Oct 26 02:59:59 2031 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 26 01:00:00 2031 UTC = Sun Oct 26 02:00:00 2031 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 28 00:59:59 2032 UTC = Sun Mar 28 01:59:59 2032 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 28 01:00:00 2032 UTC = Sun Mar 28 03:00:00 2032 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 31 00:59:59 2032 UTC = Sun Oct 31 02:59:59 2032 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 31 01:00:00 2032 UTC = Sun Oct 31 02:00:00 2032 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 27 00:59:59 2033 UTC = Sun Mar 27 01:59:59 2033 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 27 01:00:00 2033 UTC = Sun Mar 27 03:00:00 2033 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 30 00:59:59 2033 UTC = Sun Oct 30 02:59:59 2033 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 30 01:00:00 2033 UTC = Sun Oct 30 02:00:00 2033 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 26 00:59:59 2034 UTC = Sun Mar 26 01:59:59 2034 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 26 01:00:00 2034 UTC = Sun Mar 26 03:00:00 2034 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 29 00:59:59 2034 UTC = Sun Oct 29 02:59:59 2034 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 29 01:00:00 2034 UTC = Sun Oct 29 02:00:00 2034 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 25 00:59:59 2035 UTC = Sun Mar 25 01:59:59 2035 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 25 01:00:00 2035 UTC = Sun Mar 25 03:00:00 2035 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 28 00:59:59 2035 UTC = Sun Oct 28 02:59:59 2035 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 28 01:00:00 2035 UTC = Sun Oct 28 02:00:00 2035 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 30 00:59:59 2036 UTC = Sun Mar 30 01:59:59 2036 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 30 01:00:00 2036 UTC = Sun Mar 30 03:00:00 2036 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 26 00:59:59 2036 UTC = Sun Oct 26 02:59:59 2036 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 26 01:00:00 2036 UTC = Sun Oct 26 02:00:00 2036 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 29 00:59:59 2037 UTC = Sun Mar 29 01:59:59 2037 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Mar 29 01:00:00 2037 UTC = Sun Mar 29 03:00:00 2037 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 25 00:59:59 2037 UTC = Sun Oct 25 02:59:59 2037 CEST isdst=1 gmtoff=7200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Sun Oct 25 01:00:00 2037 UTC = Sun Oct 25 02:00:00 2037 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Mon Jan 18 03:14:07 2038 UTC = Mon Jan 18 04:14:07 2038 CET isdst=0 gmtoff=3600
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Berlin Tue Jan 19 03:14:07 2038 UTC = Tue Jan 19 04:14:07 2038 CET isdst=0 gmtoff=3600

Binary file not shown.

Binary file not shown.

View file

@ -1,14 +0,0 @@
Africa/Johannesburg Fri Dec 13 20:45:52 1901 UTC = Fri Dec 13 22:15:52 1901 SAST isdst=0 gmtoff=5400
Africa/Johannesburg Sat Dec 14 20:45:52 1901 UTC = Sat Dec 14 22:15:52 1901 SAST isdst=0 gmtoff=5400
Africa/Johannesburg Sat Feb 28 22:29:59 1903 UTC = Sat Feb 28 23:59:59 1903 SAST isdst=0 gmtoff=5400
Africa/Johannesburg Sat Feb 28 22:30:00 1903 UTC = Sun Mar 1 00:30:00 1903 SAST isdst=0 gmtoff=7200
Africa/Johannesburg Sat Sep 19 23:59:59 1942 UTC = Sun Sep 20 01:59:59 1942 SAST isdst=0 gmtoff=7200
Africa/Johannesburg Sun Sep 20 00:00:00 1942 UTC = Sun Sep 20 03:00:00 1942 SAST isdst=1 gmtoff=10800
Africa/Johannesburg Sat Mar 20 22:59:59 1943 UTC = Sun Mar 21 01:59:59 1943 SAST isdst=1 gmtoff=10800
Africa/Johannesburg Sat Mar 20 23:00:00 1943 UTC = Sun Mar 21 01:00:00 1943 SAST isdst=0 gmtoff=7200
Africa/Johannesburg Sat Sep 18 23:59:59 1943 UTC = Sun Sep 19 01:59:59 1943 SAST isdst=0 gmtoff=7200
Africa/Johannesburg Sun Sep 19 00:00:00 1943 UTC = Sun Sep 19 03:00:00 1943 SAST isdst=1 gmtoff=10800
Africa/Johannesburg Sat Mar 18 22:59:59 1944 UTC = Sun Mar 19 01:59:59 1944 SAST isdst=1 gmtoff=10800
Africa/Johannesburg Sat Mar 18 23:00:00 1944 UTC = Sun Mar 19 01:00:00 1944 SAST isdst=0 gmtoff=7200
Africa/Johannesburg Mon Jan 18 03:14:07 2038 UTC = Mon Jan 18 05:14:07 2038 SAST isdst=0 gmtoff=7200
Africa/Johannesburg Tue Jan 19 03:14:07 2038 UTC = Tue Jan 19 05:14:07 2038 SAST isdst=0 gmtoff=7200

Binary file not shown.

Binary file not shown.

View file

@ -1,374 +0,0 @@
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Fri Dec 13 20:45:52 1901 UTC = Fri Dec 13 12:45:52 1901 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sat Dec 14 20:45:52 1901 UTC = Sat Dec 14 12:45:52 1901 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 31 09:59:59 1918 UTC = Sun Mar 31 01:59:59 1918 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 31 10:00:00 1918 UTC = Sun Mar 31 03:00:00 1918 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 27 08:59:59 1918 UTC = Sun Oct 27 01:59:59 1918 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 27 09:00:00 1918 UTC = Sun Oct 27 01:00:00 1918 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 30 09:59:59 1919 UTC = Sun Mar 30 01:59:59 1919 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 30 10:00:00 1919 UTC = Sun Mar 30 03:00:00 1919 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 26 08:59:59 1919 UTC = Sun Oct 26 01:59:59 1919 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 26 09:00:00 1919 UTC = Sun Oct 26 01:00:00 1919 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Mon Feb 9 09:59:59 1942 UTC = Mon Feb 9 01:59:59 1942 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Mon Feb 9 10:00:00 1942 UTC = Mon Feb 9 03:00:00 1942 PWT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Tue Aug 14 22:59:59 1945 UTC = Tue Aug 14 15:59:59 1945 PWT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Tue Aug 14 23:00:00 1945 UTC = Tue Aug 14 16:00:00 1945 PPT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 30 08:59:59 1945 UTC = Sun Sep 30 01:59:59 1945 PPT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 30 09:00:00 1945 UTC = Sun Sep 30 01:00:00 1945 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 14 09:59:59 1948 UTC = Sun Mar 14 01:59:59 1948 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 14 10:00:00 1948 UTC = Sun Mar 14 03:00:00 1948 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sat Jan 1 08:59:59 1949 UTC = Sat Jan 1 01:59:59 1949 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sat Jan 1 09:00:00 1949 UTC = Sat Jan 1 01:00:00 1949 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 30 09:59:59 1950 UTC = Sun Apr 30 01:59:59 1950 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 30 10:00:00 1950 UTC = Sun Apr 30 03:00:00 1950 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 24 08:59:59 1950 UTC = Sun Sep 24 01:59:59 1950 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 24 09:00:00 1950 UTC = Sun Sep 24 01:00:00 1950 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 29 09:59:59 1951 UTC = Sun Apr 29 01:59:59 1951 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 29 10:00:00 1951 UTC = Sun Apr 29 03:00:00 1951 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 30 08:59:59 1951 UTC = Sun Sep 30 01:59:59 1951 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 30 09:00:00 1951 UTC = Sun Sep 30 01:00:00 1951 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 27 09:59:59 1952 UTC = Sun Apr 27 01:59:59 1952 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 27 10:00:00 1952 UTC = Sun Apr 27 03:00:00 1952 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 28 08:59:59 1952 UTC = Sun Sep 28 01:59:59 1952 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 28 09:00:00 1952 UTC = Sun Sep 28 01:00:00 1952 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 26 09:59:59 1953 UTC = Sun Apr 26 01:59:59 1953 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 26 10:00:00 1953 UTC = Sun Apr 26 03:00:00 1953 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 27 08:59:59 1953 UTC = Sun Sep 27 01:59:59 1953 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 27 09:00:00 1953 UTC = Sun Sep 27 01:00:00 1953 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 25 09:59:59 1954 UTC = Sun Apr 25 01:59:59 1954 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 25 10:00:00 1954 UTC = Sun Apr 25 03:00:00 1954 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 26 08:59:59 1954 UTC = Sun Sep 26 01:59:59 1954 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 26 09:00:00 1954 UTC = Sun Sep 26 01:00:00 1954 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 24 09:59:59 1955 UTC = Sun Apr 24 01:59:59 1955 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 24 10:00:00 1955 UTC = Sun Apr 24 03:00:00 1955 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 25 08:59:59 1955 UTC = Sun Sep 25 01:59:59 1955 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 25 09:00:00 1955 UTC = Sun Sep 25 01:00:00 1955 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 29 09:59:59 1956 UTC = Sun Apr 29 01:59:59 1956 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 29 10:00:00 1956 UTC = Sun Apr 29 03:00:00 1956 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 30 08:59:59 1956 UTC = Sun Sep 30 01:59:59 1956 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 30 09:00:00 1956 UTC = Sun Sep 30 01:00:00 1956 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 28 09:59:59 1957 UTC = Sun Apr 28 01:59:59 1957 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 28 10:00:00 1957 UTC = Sun Apr 28 03:00:00 1957 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 29 08:59:59 1957 UTC = Sun Sep 29 01:59:59 1957 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 29 09:00:00 1957 UTC = Sun Sep 29 01:00:00 1957 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 27 09:59:59 1958 UTC = Sun Apr 27 01:59:59 1958 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 27 10:00:00 1958 UTC = Sun Apr 27 03:00:00 1958 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 28 08:59:59 1958 UTC = Sun Sep 28 01:59:59 1958 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 28 09:00:00 1958 UTC = Sun Sep 28 01:00:00 1958 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 26 09:59:59 1959 UTC = Sun Apr 26 01:59:59 1959 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 26 10:00:00 1959 UTC = Sun Apr 26 03:00:00 1959 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 27 08:59:59 1959 UTC = Sun Sep 27 01:59:59 1959 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 27 09:00:00 1959 UTC = Sun Sep 27 01:00:00 1959 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 24 09:59:59 1960 UTC = Sun Apr 24 01:59:59 1960 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 24 10:00:00 1960 UTC = Sun Apr 24 03:00:00 1960 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 25 08:59:59 1960 UTC = Sun Sep 25 01:59:59 1960 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 25 09:00:00 1960 UTC = Sun Sep 25 01:00:00 1960 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 30 09:59:59 1961 UTC = Sun Apr 30 01:59:59 1961 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 30 10:00:00 1961 UTC = Sun Apr 30 03:00:00 1961 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 24 08:59:59 1961 UTC = Sun Sep 24 01:59:59 1961 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Sep 24 09:00:00 1961 UTC = Sun Sep 24 01:00:00 1961 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 29 09:59:59 1962 UTC = Sun Apr 29 01:59:59 1962 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 29 10:00:00 1962 UTC = Sun Apr 29 03:00:00 1962 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 28 08:59:59 1962 UTC = Sun Oct 28 01:59:59 1962 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 28 09:00:00 1962 UTC = Sun Oct 28 01:00:00 1962 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 28 09:59:59 1963 UTC = Sun Apr 28 01:59:59 1963 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 28 10:00:00 1963 UTC = Sun Apr 28 03:00:00 1963 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 27 08:59:59 1963 UTC = Sun Oct 27 01:59:59 1963 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 27 09:00:00 1963 UTC = Sun Oct 27 01:00:00 1963 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 26 09:59:59 1964 UTC = Sun Apr 26 01:59:59 1964 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 26 10:00:00 1964 UTC = Sun Apr 26 03:00:00 1964 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 25 08:59:59 1964 UTC = Sun Oct 25 01:59:59 1964 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 25 09:00:00 1964 UTC = Sun Oct 25 01:00:00 1964 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 25 09:59:59 1965 UTC = Sun Apr 25 01:59:59 1965 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 25 10:00:00 1965 UTC = Sun Apr 25 03:00:00 1965 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 31 08:59:59 1965 UTC = Sun Oct 31 01:59:59 1965 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 31 09:00:00 1965 UTC = Sun Oct 31 01:00:00 1965 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 24 09:59:59 1966 UTC = Sun Apr 24 01:59:59 1966 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 24 10:00:00 1966 UTC = Sun Apr 24 03:00:00 1966 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 30 08:59:59 1966 UTC = Sun Oct 30 01:59:59 1966 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 30 09:00:00 1966 UTC = Sun Oct 30 01:00:00 1966 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 30 09:59:59 1967 UTC = Sun Apr 30 01:59:59 1967 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 30 10:00:00 1967 UTC = Sun Apr 30 03:00:00 1967 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 29 08:59:59 1967 UTC = Sun Oct 29 01:59:59 1967 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 29 09:00:00 1967 UTC = Sun Oct 29 01:00:00 1967 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 28 09:59:59 1968 UTC = Sun Apr 28 01:59:59 1968 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 28 10:00:00 1968 UTC = Sun Apr 28 03:00:00 1968 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 27 08:59:59 1968 UTC = Sun Oct 27 01:59:59 1968 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 27 09:00:00 1968 UTC = Sun Oct 27 01:00:00 1968 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 27 09:59:59 1969 UTC = Sun Apr 27 01:59:59 1969 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 27 10:00:00 1969 UTC = Sun Apr 27 03:00:00 1969 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 26 08:59:59 1969 UTC = Sun Oct 26 01:59:59 1969 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 26 09:00:00 1969 UTC = Sun Oct 26 01:00:00 1969 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 26 09:59:59 1970 UTC = Sun Apr 26 01:59:59 1970 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 26 10:00:00 1970 UTC = Sun Apr 26 03:00:00 1970 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 25 08:59:59 1970 UTC = Sun Oct 25 01:59:59 1970 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 25 09:00:00 1970 UTC = Sun Oct 25 01:00:00 1970 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 25 09:59:59 1971 UTC = Sun Apr 25 01:59:59 1971 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 25 10:00:00 1971 UTC = Sun Apr 25 03:00:00 1971 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 31 08:59:59 1971 UTC = Sun Oct 31 01:59:59 1971 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 31 09:00:00 1971 UTC = Sun Oct 31 01:00:00 1971 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 30 09:59:59 1972 UTC = Sun Apr 30 01:59:59 1972 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 30 10:00:00 1972 UTC = Sun Apr 30 03:00:00 1972 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 29 08:59:59 1972 UTC = Sun Oct 29 01:59:59 1972 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 29 09:00:00 1972 UTC = Sun Oct 29 01:00:00 1972 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 29 09:59:59 1973 UTC = Sun Apr 29 01:59:59 1973 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 29 10:00:00 1973 UTC = Sun Apr 29 03:00:00 1973 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 28 08:59:59 1973 UTC = Sun Oct 28 01:59:59 1973 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 28 09:00:00 1973 UTC = Sun Oct 28 01:00:00 1973 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Jan 6 09:59:59 1974 UTC = Sun Jan 6 01:59:59 1974 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Jan 6 10:00:00 1974 UTC = Sun Jan 6 03:00:00 1974 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 27 08:59:59 1974 UTC = Sun Oct 27 01:59:59 1974 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 27 09:00:00 1974 UTC = Sun Oct 27 01:00:00 1974 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Feb 23 09:59:59 1975 UTC = Sun Feb 23 01:59:59 1975 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Feb 23 10:00:00 1975 UTC = Sun Feb 23 03:00:00 1975 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 26 08:59:59 1975 UTC = Sun Oct 26 01:59:59 1975 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 26 09:00:00 1975 UTC = Sun Oct 26 01:00:00 1975 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 25 09:59:59 1976 UTC = Sun Apr 25 01:59:59 1976 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 25 10:00:00 1976 UTC = Sun Apr 25 03:00:00 1976 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 31 08:59:59 1976 UTC = Sun Oct 31 01:59:59 1976 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 31 09:00:00 1976 UTC = Sun Oct 31 01:00:00 1976 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 24 09:59:59 1977 UTC = Sun Apr 24 01:59:59 1977 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 24 10:00:00 1977 UTC = Sun Apr 24 03:00:00 1977 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 30 08:59:59 1977 UTC = Sun Oct 30 01:59:59 1977 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 30 09:00:00 1977 UTC = Sun Oct 30 01:00:00 1977 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 30 09:59:59 1978 UTC = Sun Apr 30 01:59:59 1978 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 30 10:00:00 1978 UTC = Sun Apr 30 03:00:00 1978 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 29 08:59:59 1978 UTC = Sun Oct 29 01:59:59 1978 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 29 09:00:00 1978 UTC = Sun Oct 29 01:00:00 1978 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 29 09:59:59 1979 UTC = Sun Apr 29 01:59:59 1979 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 29 10:00:00 1979 UTC = Sun Apr 29 03:00:00 1979 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 28 08:59:59 1979 UTC = Sun Oct 28 01:59:59 1979 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 28 09:00:00 1979 UTC = Sun Oct 28 01:00:00 1979 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 27 09:59:59 1980 UTC = Sun Apr 27 01:59:59 1980 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 27 10:00:00 1980 UTC = Sun Apr 27 03:00:00 1980 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 26 08:59:59 1980 UTC = Sun Oct 26 01:59:59 1980 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 26 09:00:00 1980 UTC = Sun Oct 26 01:00:00 1980 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 26 09:59:59 1981 UTC = Sun Apr 26 01:59:59 1981 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 26 10:00:00 1981 UTC = Sun Apr 26 03:00:00 1981 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 25 08:59:59 1981 UTC = Sun Oct 25 01:59:59 1981 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 25 09:00:00 1981 UTC = Sun Oct 25 01:00:00 1981 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 25 09:59:59 1982 UTC = Sun Apr 25 01:59:59 1982 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 25 10:00:00 1982 UTC = Sun Apr 25 03:00:00 1982 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 31 08:59:59 1982 UTC = Sun Oct 31 01:59:59 1982 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 31 09:00:00 1982 UTC = Sun Oct 31 01:00:00 1982 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 24 09:59:59 1983 UTC = Sun Apr 24 01:59:59 1983 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 24 10:00:00 1983 UTC = Sun Apr 24 03:00:00 1983 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 30 08:59:59 1983 UTC = Sun Oct 30 01:59:59 1983 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 30 09:00:00 1983 UTC = Sun Oct 30 01:00:00 1983 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 29 09:59:59 1984 UTC = Sun Apr 29 01:59:59 1984 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 29 10:00:00 1984 UTC = Sun Apr 29 03:00:00 1984 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 28 08:59:59 1984 UTC = Sun Oct 28 01:59:59 1984 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 28 09:00:00 1984 UTC = Sun Oct 28 01:00:00 1984 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 28 09:59:59 1985 UTC = Sun Apr 28 01:59:59 1985 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 28 10:00:00 1985 UTC = Sun Apr 28 03:00:00 1985 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 27 08:59:59 1985 UTC = Sun Oct 27 01:59:59 1985 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 27 09:00:00 1985 UTC = Sun Oct 27 01:00:00 1985 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 27 09:59:59 1986 UTC = Sun Apr 27 01:59:59 1986 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 27 10:00:00 1986 UTC = Sun Apr 27 03:00:00 1986 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 26 08:59:59 1986 UTC = Sun Oct 26 01:59:59 1986 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 26 09:00:00 1986 UTC = Sun Oct 26 01:00:00 1986 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 5 09:59:59 1987 UTC = Sun Apr 5 01:59:59 1987 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 5 10:00:00 1987 UTC = Sun Apr 5 03:00:00 1987 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 25 08:59:59 1987 UTC = Sun Oct 25 01:59:59 1987 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 25 09:00:00 1987 UTC = Sun Oct 25 01:00:00 1987 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 3 09:59:59 1988 UTC = Sun Apr 3 01:59:59 1988 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 3 10:00:00 1988 UTC = Sun Apr 3 03:00:00 1988 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 30 08:59:59 1988 UTC = Sun Oct 30 01:59:59 1988 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 30 09:00:00 1988 UTC = Sun Oct 30 01:00:00 1988 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 2 09:59:59 1989 UTC = Sun Apr 2 01:59:59 1989 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 2 10:00:00 1989 UTC = Sun Apr 2 03:00:00 1989 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 29 08:59:59 1989 UTC = Sun Oct 29 01:59:59 1989 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 29 09:00:00 1989 UTC = Sun Oct 29 01:00:00 1989 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 1 09:59:59 1990 UTC = Sun Apr 1 01:59:59 1990 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 1 10:00:00 1990 UTC = Sun Apr 1 03:00:00 1990 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 28 08:59:59 1990 UTC = Sun Oct 28 01:59:59 1990 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 28 09:00:00 1990 UTC = Sun Oct 28 01:00:00 1990 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 7 09:59:59 1991 UTC = Sun Apr 7 01:59:59 1991 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 7 10:00:00 1991 UTC = Sun Apr 7 03:00:00 1991 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 27 08:59:59 1991 UTC = Sun Oct 27 01:59:59 1991 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 27 09:00:00 1991 UTC = Sun Oct 27 01:00:00 1991 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 5 09:59:59 1992 UTC = Sun Apr 5 01:59:59 1992 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 5 10:00:00 1992 UTC = Sun Apr 5 03:00:00 1992 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 25 08:59:59 1992 UTC = Sun Oct 25 01:59:59 1992 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 25 09:00:00 1992 UTC = Sun Oct 25 01:00:00 1992 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 4 09:59:59 1993 UTC = Sun Apr 4 01:59:59 1993 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 4 10:00:00 1993 UTC = Sun Apr 4 03:00:00 1993 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 31 08:59:59 1993 UTC = Sun Oct 31 01:59:59 1993 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 31 09:00:00 1993 UTC = Sun Oct 31 01:00:00 1993 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 3 09:59:59 1994 UTC = Sun Apr 3 01:59:59 1994 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 3 10:00:00 1994 UTC = Sun Apr 3 03:00:00 1994 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 30 08:59:59 1994 UTC = Sun Oct 30 01:59:59 1994 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 30 09:00:00 1994 UTC = Sun Oct 30 01:00:00 1994 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 2 09:59:59 1995 UTC = Sun Apr 2 01:59:59 1995 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 2 10:00:00 1995 UTC = Sun Apr 2 03:00:00 1995 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 29 08:59:59 1995 UTC = Sun Oct 29 01:59:59 1995 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 29 09:00:00 1995 UTC = Sun Oct 29 01:00:00 1995 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 7 09:59:59 1996 UTC = Sun Apr 7 01:59:59 1996 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 7 10:00:00 1996 UTC = Sun Apr 7 03:00:00 1996 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 27 08:59:59 1996 UTC = Sun Oct 27 01:59:59 1996 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 27 09:00:00 1996 UTC = Sun Oct 27 01:00:00 1996 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 6 09:59:59 1997 UTC = Sun Apr 6 01:59:59 1997 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 6 10:00:00 1997 UTC = Sun Apr 6 03:00:00 1997 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 26 08:59:59 1997 UTC = Sun Oct 26 01:59:59 1997 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 26 09:00:00 1997 UTC = Sun Oct 26 01:00:00 1997 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 5 09:59:59 1998 UTC = Sun Apr 5 01:59:59 1998 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 5 10:00:00 1998 UTC = Sun Apr 5 03:00:00 1998 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 25 08:59:59 1998 UTC = Sun Oct 25 01:59:59 1998 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 25 09:00:00 1998 UTC = Sun Oct 25 01:00:00 1998 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 4 09:59:59 1999 UTC = Sun Apr 4 01:59:59 1999 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 4 10:00:00 1999 UTC = Sun Apr 4 03:00:00 1999 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 31 08:59:59 1999 UTC = Sun Oct 31 01:59:59 1999 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 31 09:00:00 1999 UTC = Sun Oct 31 01:00:00 1999 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 2 09:59:59 2000 UTC = Sun Apr 2 01:59:59 2000 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 2 10:00:00 2000 UTC = Sun Apr 2 03:00:00 2000 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 29 08:59:59 2000 UTC = Sun Oct 29 01:59:59 2000 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 29 09:00:00 2000 UTC = Sun Oct 29 01:00:00 2000 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 1 09:59:59 2001 UTC = Sun Apr 1 01:59:59 2001 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 1 10:00:00 2001 UTC = Sun Apr 1 03:00:00 2001 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 28 08:59:59 2001 UTC = Sun Oct 28 01:59:59 2001 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 28 09:00:00 2001 UTC = Sun Oct 28 01:00:00 2001 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 7 09:59:59 2002 UTC = Sun Apr 7 01:59:59 2002 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 7 10:00:00 2002 UTC = Sun Apr 7 03:00:00 2002 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 27 08:59:59 2002 UTC = Sun Oct 27 01:59:59 2002 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 27 09:00:00 2002 UTC = Sun Oct 27 01:00:00 2002 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 6 09:59:59 2003 UTC = Sun Apr 6 01:59:59 2003 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 6 10:00:00 2003 UTC = Sun Apr 6 03:00:00 2003 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 26 08:59:59 2003 UTC = Sun Oct 26 01:59:59 2003 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 26 09:00:00 2003 UTC = Sun Oct 26 01:00:00 2003 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 4 09:59:59 2004 UTC = Sun Apr 4 01:59:59 2004 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 4 10:00:00 2004 UTC = Sun Apr 4 03:00:00 2004 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 31 08:59:59 2004 UTC = Sun Oct 31 01:59:59 2004 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 31 09:00:00 2004 UTC = Sun Oct 31 01:00:00 2004 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 3 09:59:59 2005 UTC = Sun Apr 3 01:59:59 2005 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 3 10:00:00 2005 UTC = Sun Apr 3 03:00:00 2005 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 30 08:59:59 2005 UTC = Sun Oct 30 01:59:59 2005 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 30 09:00:00 2005 UTC = Sun Oct 30 01:00:00 2005 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 2 09:59:59 2006 UTC = Sun Apr 2 01:59:59 2006 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Apr 2 10:00:00 2006 UTC = Sun Apr 2 03:00:00 2006 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 29 08:59:59 2006 UTC = Sun Oct 29 01:59:59 2006 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Oct 29 09:00:00 2006 UTC = Sun Oct 29 01:00:00 2006 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 11 09:59:59 2007 UTC = Sun Mar 11 01:59:59 2007 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 11 10:00:00 2007 UTC = Sun Mar 11 03:00:00 2007 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 4 08:59:59 2007 UTC = Sun Nov 4 01:59:59 2007 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 4 09:00:00 2007 UTC = Sun Nov 4 01:00:00 2007 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 9 09:59:59 2008 UTC = Sun Mar 9 01:59:59 2008 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 9 10:00:00 2008 UTC = Sun Mar 9 03:00:00 2008 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 2 08:59:59 2008 UTC = Sun Nov 2 01:59:59 2008 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 2 09:00:00 2008 UTC = Sun Nov 2 01:00:00 2008 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 8 09:59:59 2009 UTC = Sun Mar 8 01:59:59 2009 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 8 10:00:00 2009 UTC = Sun Mar 8 03:00:00 2009 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 1 08:59:59 2009 UTC = Sun Nov 1 01:59:59 2009 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 1 09:00:00 2009 UTC = Sun Nov 1 01:00:00 2009 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 14 09:59:59 2010 UTC = Sun Mar 14 01:59:59 2010 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 14 10:00:00 2010 UTC = Sun Mar 14 03:00:00 2010 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 7 08:59:59 2010 UTC = Sun Nov 7 01:59:59 2010 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 7 09:00:00 2010 UTC = Sun Nov 7 01:00:00 2010 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 13 09:59:59 2011 UTC = Sun Mar 13 01:59:59 2011 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 13 10:00:00 2011 UTC = Sun Mar 13 03:00:00 2011 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 6 08:59:59 2011 UTC = Sun Nov 6 01:59:59 2011 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 6 09:00:00 2011 UTC = Sun Nov 6 01:00:00 2011 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 11 09:59:59 2012 UTC = Sun Mar 11 01:59:59 2012 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 11 10:00:00 2012 UTC = Sun Mar 11 03:00:00 2012 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 4 08:59:59 2012 UTC = Sun Nov 4 01:59:59 2012 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 4 09:00:00 2012 UTC = Sun Nov 4 01:00:00 2012 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 10 09:59:59 2013 UTC = Sun Mar 10 01:59:59 2013 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 10 10:00:00 2013 UTC = Sun Mar 10 03:00:00 2013 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 3 08:59:59 2013 UTC = Sun Nov 3 01:59:59 2013 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 3 09:00:00 2013 UTC = Sun Nov 3 01:00:00 2013 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 9 09:59:59 2014 UTC = Sun Mar 9 01:59:59 2014 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 9 10:00:00 2014 UTC = Sun Mar 9 03:00:00 2014 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 2 08:59:59 2014 UTC = Sun Nov 2 01:59:59 2014 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 2 09:00:00 2014 UTC = Sun Nov 2 01:00:00 2014 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 8 09:59:59 2015 UTC = Sun Mar 8 01:59:59 2015 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 8 10:00:00 2015 UTC = Sun Mar 8 03:00:00 2015 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 1 08:59:59 2015 UTC = Sun Nov 1 01:59:59 2015 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 1 09:00:00 2015 UTC = Sun Nov 1 01:00:00 2015 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 13 09:59:59 2016 UTC = Sun Mar 13 01:59:59 2016 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 13 10:00:00 2016 UTC = Sun Mar 13 03:00:00 2016 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 6 08:59:59 2016 UTC = Sun Nov 6 01:59:59 2016 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 6 09:00:00 2016 UTC = Sun Nov 6 01:00:00 2016 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 12 09:59:59 2017 UTC = Sun Mar 12 01:59:59 2017 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 12 10:00:00 2017 UTC = Sun Mar 12 03:00:00 2017 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 5 08:59:59 2017 UTC = Sun Nov 5 01:59:59 2017 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 5 09:00:00 2017 UTC = Sun Nov 5 01:00:00 2017 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 11 09:59:59 2018 UTC = Sun Mar 11 01:59:59 2018 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 11 10:00:00 2018 UTC = Sun Mar 11 03:00:00 2018 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 4 08:59:59 2018 UTC = Sun Nov 4 01:59:59 2018 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 4 09:00:00 2018 UTC = Sun Nov 4 01:00:00 2018 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 10 09:59:59 2019 UTC = Sun Mar 10 01:59:59 2019 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 10 10:00:00 2019 UTC = Sun Mar 10 03:00:00 2019 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 3 08:59:59 2019 UTC = Sun Nov 3 01:59:59 2019 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 3 09:00:00 2019 UTC = Sun Nov 3 01:00:00 2019 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 8 09:59:59 2020 UTC = Sun Mar 8 01:59:59 2020 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 8 10:00:00 2020 UTC = Sun Mar 8 03:00:00 2020 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 1 08:59:59 2020 UTC = Sun Nov 1 01:59:59 2020 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 1 09:00:00 2020 UTC = Sun Nov 1 01:00:00 2020 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 14 09:59:59 2021 UTC = Sun Mar 14 01:59:59 2021 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 14 10:00:00 2021 UTC = Sun Mar 14 03:00:00 2021 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 7 08:59:59 2021 UTC = Sun Nov 7 01:59:59 2021 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 7 09:00:00 2021 UTC = Sun Nov 7 01:00:00 2021 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 13 09:59:59 2022 UTC = Sun Mar 13 01:59:59 2022 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 13 10:00:00 2022 UTC = Sun Mar 13 03:00:00 2022 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 6 08:59:59 2022 UTC = Sun Nov 6 01:59:59 2022 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 6 09:00:00 2022 UTC = Sun Nov 6 01:00:00 2022 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 12 09:59:59 2023 UTC = Sun Mar 12 01:59:59 2023 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 12 10:00:00 2023 UTC = Sun Mar 12 03:00:00 2023 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 5 08:59:59 2023 UTC = Sun Nov 5 01:59:59 2023 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 5 09:00:00 2023 UTC = Sun Nov 5 01:00:00 2023 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 10 09:59:59 2024 UTC = Sun Mar 10 01:59:59 2024 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 10 10:00:00 2024 UTC = Sun Mar 10 03:00:00 2024 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 3 08:59:59 2024 UTC = Sun Nov 3 01:59:59 2024 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 3 09:00:00 2024 UTC = Sun Nov 3 01:00:00 2024 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 9 09:59:59 2025 UTC = Sun Mar 9 01:59:59 2025 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 9 10:00:00 2025 UTC = Sun Mar 9 03:00:00 2025 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 2 08:59:59 2025 UTC = Sun Nov 2 01:59:59 2025 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 2 09:00:00 2025 UTC = Sun Nov 2 01:00:00 2025 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 8 09:59:59 2026 UTC = Sun Mar 8 01:59:59 2026 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 8 10:00:00 2026 UTC = Sun Mar 8 03:00:00 2026 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 1 08:59:59 2026 UTC = Sun Nov 1 01:59:59 2026 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 1 09:00:00 2026 UTC = Sun Nov 1 01:00:00 2026 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 14 09:59:59 2027 UTC = Sun Mar 14 01:59:59 2027 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 14 10:00:00 2027 UTC = Sun Mar 14 03:00:00 2027 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 7 08:59:59 2027 UTC = Sun Nov 7 01:59:59 2027 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 7 09:00:00 2027 UTC = Sun Nov 7 01:00:00 2027 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 12 09:59:59 2028 UTC = Sun Mar 12 01:59:59 2028 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 12 10:00:00 2028 UTC = Sun Mar 12 03:00:00 2028 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 5 08:59:59 2028 UTC = Sun Nov 5 01:59:59 2028 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 5 09:00:00 2028 UTC = Sun Nov 5 01:00:00 2028 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 11 09:59:59 2029 UTC = Sun Mar 11 01:59:59 2029 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 11 10:00:00 2029 UTC = Sun Mar 11 03:00:00 2029 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 4 08:59:59 2029 UTC = Sun Nov 4 01:59:59 2029 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 4 09:00:00 2029 UTC = Sun Nov 4 01:00:00 2029 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 10 09:59:59 2030 UTC = Sun Mar 10 01:59:59 2030 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 10 10:00:00 2030 UTC = Sun Mar 10 03:00:00 2030 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 3 08:59:59 2030 UTC = Sun Nov 3 01:59:59 2030 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 3 09:00:00 2030 UTC = Sun Nov 3 01:00:00 2030 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 9 09:59:59 2031 UTC = Sun Mar 9 01:59:59 2031 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 9 10:00:00 2031 UTC = Sun Mar 9 03:00:00 2031 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 2 08:59:59 2031 UTC = Sun Nov 2 01:59:59 2031 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 2 09:00:00 2031 UTC = Sun Nov 2 01:00:00 2031 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 14 09:59:59 2032 UTC = Sun Mar 14 01:59:59 2032 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 14 10:00:00 2032 UTC = Sun Mar 14 03:00:00 2032 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 7 08:59:59 2032 UTC = Sun Nov 7 01:59:59 2032 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 7 09:00:00 2032 UTC = Sun Nov 7 01:00:00 2032 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 13 09:59:59 2033 UTC = Sun Mar 13 01:59:59 2033 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 13 10:00:00 2033 UTC = Sun Mar 13 03:00:00 2033 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 6 08:59:59 2033 UTC = Sun Nov 6 01:59:59 2033 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 6 09:00:00 2033 UTC = Sun Nov 6 01:00:00 2033 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 12 09:59:59 2034 UTC = Sun Mar 12 01:59:59 2034 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 12 10:00:00 2034 UTC = Sun Mar 12 03:00:00 2034 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 5 08:59:59 2034 UTC = Sun Nov 5 01:59:59 2034 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 5 09:00:00 2034 UTC = Sun Nov 5 01:00:00 2034 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 11 09:59:59 2035 UTC = Sun Mar 11 01:59:59 2035 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 11 10:00:00 2035 UTC = Sun Mar 11 03:00:00 2035 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 4 08:59:59 2035 UTC = Sun Nov 4 01:59:59 2035 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 4 09:00:00 2035 UTC = Sun Nov 4 01:00:00 2035 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 9 09:59:59 2036 UTC = Sun Mar 9 01:59:59 2036 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 9 10:00:00 2036 UTC = Sun Mar 9 03:00:00 2036 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 2 08:59:59 2036 UTC = Sun Nov 2 01:59:59 2036 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 2 09:00:00 2036 UTC = Sun Nov 2 01:00:00 2036 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 8 09:59:59 2037 UTC = Sun Mar 8 01:59:59 2037 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Mar 8 10:00:00 2037 UTC = Sun Mar 8 03:00:00 2037 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 1 08:59:59 2037 UTC = Sun Nov 1 01:59:59 2037 PDT isdst=1 gmtoff=-25200
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Sun Nov 1 09:00:00 2037 UTC = Sun Nov 1 01:00:00 2037 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Mon Jan 18 03:14:07 2038 UTC = Sun Jan 17 19:14:07 2038 PST isdst=0 gmtoff=-28800
/home/david/src/kde/4.8/kdelibs/kdecore/tests/Los_Angeles Tue Jan 19 03:14:07 2038 UTC = Mon Jan 18 19:14:07 2038 PST isdst=0 gmtoff=-28800

Binary file not shown.

View file

@ -312,13 +312,13 @@ void KStandarddirsTest::testAddResourceType()
void KStandarddirsTest::testAddResourceDir()
{
const QString dir = QString::fromLatin1(KDESRCDIR);
const QString file = "Cairo";
const QString file = "kstandarddirstest.cpp";
QString ret = KStandardDirs::locate( "here", file );
QCOMPARE(ret, QString()); // not set up yet
KGlobal::dirs()->addResourceDir("here", dir);
ret = KStandardDirs::locate( "here", file );
QCOMPARE_PATHS(ret, KGlobal::dirs()->realPath(dir) + "Cairo");
QCOMPARE_PATHS(ret, KGlobal::dirs()->realPath(dir) + "kstandarddirstest.cpp");
}
void KStandarddirsTest::testSetXdgDataDirs()

View file

@ -17,81 +17,23 @@
Boston, MA 02110-1301, USA.
*/
#include "config-date.h" // for HAVE_TM_GMTOFF
#include "ktimezonestest.h"
#include "ktimezonestest_p.h"
#include "ksystemtimezone.h"
#include "qtest_kde.h"
#include <QtCore/QDir>
#include <QtCore/QDateTime>
#include <stdio.h>
#include <stdlib.h>
QTEST_KDEMAIN_CORE(KTimeZonesTest)
TimeZoneTestData s_testData;
void KTimeZonesTest::initTestCase()
{
s_testData.setupTimeZoneTest(); // see ktimezonestest_p.h
mDataDir = s_testData.dataDir();
}
void KTimeZonesTest::cleanupTestCase()
{
s_testData.cleanupTimeZoneTest();
}
///////////////////
// KTimeZones tests
///////////////////
void KTimeZonesTest::ktimezones()
{
KTimeZones timezones;
KTimeZone zone1("Zone1");
QVERIFY(zone1.isValid());
KTimeZone zone2("Zone2");
QVERIFY(zone2.isValid());
QVERIFY(timezones.add(zone1));
QVERIFY(!timezones.add(zone1));
QVERIFY(timezones.add(zone2));
QCOMPARE(timezones.zones().count(), 2);
KTimeZone tz = timezones.zone("Zone1");
QVERIFY((tz == zone1));
tz = timezones.zone("Zone99");
QVERIFY(!tz.isValid());
zone1 = timezones.remove(zone1);
QVERIFY(zone1.isValid());
QCOMPARE(timezones.zones().count(), 1);
QVERIFY(!timezones.remove(zone1).isValid());
QVERIFY(timezones.add(zone1));
QVERIFY(timezones.remove("Zone1").isValid());
QVERIFY(!timezones.remove("Zone1").isValid());
QVERIFY(timezones.remove("Zone2").isValid());
zone1 = KTimeZone("Zone10");
QVERIFY(timezones.add(zone1));
QCOMPARE(timezones.zones().count(), 1);
timezones.clear();
QCOMPARE(timezones.zones().count(), 0);
}
//////////////////////////
// KTimeZone: ref counting
//////////////////////////
void KTimeZonesTest::refcount()
{
KTimeZone *zone1 = new KTimeZone("Zone1");
QCOMPARE(zone1->name(), QString("Zone1"));
KTimeZones timezones;
timezones.add(*zone1);
delete zone1;
zone1 = 0;
KTimeZone tz = timezones.zone("Zone1");
QVERIFY(tz.isValid());
QCOMPARE(tz.name(), QString("Zone1"));
}
///////////////////
@ -103,10 +45,8 @@ void KTimeZonesTest::utc()
KTimeZone utc = KTimeZone::utc();
QVERIFY(utc.isValid());
QCOMPARE(utc.name(), QString("UTC"));
QCOMPARE(utc.offsetAtUtc(QDateTime(QDate(2005,1,1), QTime(), Qt::LocalTime)), 0);
QCOMPARE(utc.offsetAtUtc(QDateTime(QDate(2005,1,1), QTime(), Qt::UTC)), 0);
QCOMPARE(utc.offsetAtUtc(QDateTime(QDate(2005,2,1), QTime(), Qt::UTC)), 0);
QCOMPARE(utc.offsetAtUtc(QDateTime(QDate(2005,7,1), QTime(), Qt::UTC)), 0);
KTimeZone systemUtc = KSystemTimeZones::zone("UTC");
QCOMPARE(utc, systemUtc);
}
/////////////////////////
@ -115,593 +55,40 @@ void KTimeZonesTest::utc()
void KTimeZonesTest::local()
{
const QByteArray tz = qgetenv("TZ");
::setenv("TZ", "Europe/Paris", 1);
KTimeZone local = KSystemTimeZones::local();
QVERIFY(local.isValid());
QCOMPARE(local.name(), QString::fromLatin1("Europe/Paris"));
::setenv("TZ", tz.constData(), 1);
}
void KTimeZonesTest::zone()
{
KTimeZone utc = KSystemTimeZones::zone("UTC");
QVERIFY(utc.isValid());
KTimeZone losAngeles = KSystemTimeZones::zone("America/Los_Angeles");
QVERIFY(losAngeles.isValid());
KTimeZone london = KSystemTimeZones::zone("Europe/London");
QVERIFY(london.isValid());
QCOMPARE(london.name(), QString("Europe/London"));
QCOMPARE(london.countryCode(), QString("GB"));
QCOMPARE(london.latitude(), float(51*3600 + 28*60 + 30)/3600.0f);
QCOMPARE(london.longitude(), -float(0*3600 + 18*60 + 45)/3600.0f);
QCOMPARE(london.comment(), QString("Great Britain"));
QCOMPARE(losAngeles.longitude(), -float(118*3600 + 14*60 + 34)/3600.0f);
QCOMPARE(london.latitude(), float(51.5083));
QCOMPARE(london.longitude(), float(-0.125278));
QCOMPARE(london.comment(), QString());
KTimeZone losAngeles = KSystemTimeZones::zone("America/Los_Angeles");
QVERIFY(losAngeles.isValid());
QCOMPARE(losAngeles.name(), QString("America/Los_Angeles"));
QCOMPARE(losAngeles.countryCode(), QString("US"));
QCOMPARE(losAngeles.latitude(), float(34.0522));
QCOMPARE(losAngeles.longitude(), float(-118.243));
QCOMPARE(losAngeles.comment(), QString("Pacific"));
}
void KTimeZonesTest::zoneinfoDir()
{
QString zoneinfo = KSystemTimeZones::zoneinfoDir();
QCOMPARE(zoneinfo, mDataDir);
}
void KTimeZonesTest::zonetabChange()
{
QCOMPARE(KSystemTimeZones::zones().count(), 5);
KTimeZone london = KSystemTimeZones::zone("Europe/London");
QVERIFY(london.isValid());
QCOMPARE(london.countryCode(), QString("GB"));
QCOMPARE(london.latitude(), float(51*3600 + 28*60 + 30)/3600.0f);
QCOMPARE(london.longitude(), -float(0*3600 + 18*60 + 45)/3600.0f);
QCOMPARE(london.comment(), QString("Great Britain"));
QVERIFY(!KSystemTimeZones::zone("Europe/Berlin").isValid());
QVERIFY(KSystemTimeZones::zone("Europe/Paris").isValid());
QVERIFY(KSystemTimeZones::zone("Europe/London").isValid());
QVERIFY(KSystemTimeZones::zone("Africa/Cairo").isValid());
QVERIFY(!KSystemTimeZones::zone("Asia/Dili").isValid());
QVERIFY(KSystemTimeZones::zone("America/Los_Angeles").isValid());
// Check that 'london' is automatically updated with the new zone.tab
// contents, and that the new zones are added to KSystemTimeZones.
s_testData.writeZoneTab(true);
QTest::qWait(3000);
QCOMPARE(KSystemTimeZones::zones().count(), 7);
london = KSystemTimeZones::zone("Europe/London");
QVERIFY(london.isValid());
QCOMPARE(london.countryCode(), QString("XX"));
QCOMPARE(london.latitude(), -float(51*3600 + 28*60 + 30)/3600.0f);
QCOMPARE(london.longitude(), float(0*3600 + 18*60 + 45)/3600.0f);
QCOMPARE(london.comment(), QString("Greater Britain"));
QCOMPARE(KSystemTimeZones::zone("Europe/London"), london);
QVERIFY(KSystemTimeZones::zone("Europe/Berlin").isValid());
QVERIFY(KSystemTimeZones::zone("Europe/Paris").isValid());
QVERIFY(KSystemTimeZones::zone("Europe/London").isValid());
QVERIFY(KSystemTimeZones::zone("Africa/Cairo").isValid());
QVERIFY(KSystemTimeZones::zone("Africa/Johannesburg").isValid());
QVERIFY(KSystemTimeZones::zone("Asia/Dili").isValid());
QVERIFY(KSystemTimeZones::zone("America/Los_Angeles").isValid());
// Check that 'london' is automatically updated with the new zone.tab
// contents, and that the removed zones are deleted from KSystemTimeZones.
s_testData.writeZoneTab(false);
QTest::qWait(3000);
london = KSystemTimeZones::zone("Europe/London");
QCOMPARE(KSystemTimeZones::zones().count(), 5);
QVERIFY(london.isValid());
QCOMPARE(london.countryCode(), QString("GB"));
QCOMPARE(london.latitude(), float(51*3600 + 28*60 + 30)/3600.0f);
QCOMPARE(london.longitude(), -float(0*3600 + 18*60 + 45)/3600.0f);
QCOMPARE(london.comment(), QString("Great Britain"));
QCOMPARE(KSystemTimeZones::zone("Europe/London"), london);
QVERIFY(!KSystemTimeZones::zone("Europe/Berlin").isValid());
QVERIFY(KSystemTimeZones::zone("Europe/Paris").isValid());
QVERIFY(KSystemTimeZones::zone("Europe/London").isValid());
QVERIFY(KSystemTimeZones::zone("Africa/Cairo").isValid());
QVERIFY(!KSystemTimeZones::zone("Asia/Dili").isValid());
QVERIFY(KSystemTimeZones::zone("America/Los_Angeles").isValid());
}
////////////////////////
// KSystemTimeZone tests
////////////////////////
void KTimeZonesTest::currentOffset()
{
const char *originalZone = ::getenv("TZ"); // save the original local time zone
::setenv("TZ", ":Europe/Paris", 1);
::tzset();
// Find the current offset of a time zone
time_t now = time(0);
tm *tnow = localtime(&now);
#if defined(HAVE_TM_GMTOFF)
int offset = tnow->tm_gmtoff;
#else
int offset = 0;
#endif
KTimeZone local = KSystemTimeZones::local();
QVERIFY(local.isValid());
QCOMPARE(local.currentOffset(Qt::UTC), offset);
// Restore the original local time zone
if (!originalZone)
::unsetenv("TZ");
else
::setenv("TZ", originalZone, 1);
::tzset();
}
void KTimeZonesTest::offsetAtUtc()
{
// Find some offsets for Europe/London.
KTimeZone losAngeles = KSystemTimeZones::zone("America/Los_Angeles");
QVERIFY(losAngeles.isValid());
KTimeZone london = KSystemTimeZones::zone("Europe/London");
QVERIFY(london.isValid());
QDateTime winter(QDate(2005,1,1), QTime(0,0,0), Qt::UTC);
QDateTime summer(QDate(2005,6,1), QTime(0,0,0), Qt::UTC);
QCOMPARE(london.offsetAtUtc(winter), 0);
QCOMPARE(london.offsetAtUtc(summer), 3600);;
QCOMPARE(losAngeles.offsetAtUtc(winter), -28800);
QCOMPARE(losAngeles.offsetAtUtc(summer), -25200);;
}
void KTimeZonesTest::offsetAtZoneTime()
{
QDateTime Gmt1(QDate(2005,3,27), QTime(0,30,0), Qt::LocalTime);
QDateTime GmtToBst1(QDate(2005,3,27), QTime(0,59,59), Qt::LocalTime);
QDateTime GmtToBst2(QDate(2005,3,27), QTime(1,0,0), Qt::LocalTime);
QDateTime GmtToBst3(QDate(2005,3,27), QTime(1,59,59), Qt::LocalTime);
QDateTime GmtToBst4(QDate(2005,3,27), QTime(2,0,0), Qt::LocalTime);
QDateTime Bst1(QDate(2005,4,27), QTime(2,30,0), Qt::LocalTime);
QDateTime Bst2(QDate(2005,10,30), QTime(0,30,0), Qt::LocalTime);
QDateTime BstToGmt1(QDate(2005,10,30), QTime(0,59,59), Qt::LocalTime);
QDateTime BstToGmt2(QDate(2005,10,30), QTime(1,0,0), Qt::LocalTime);
QDateTime BstToGmt3(QDate(2005,10,30), QTime(1,59,59), Qt::LocalTime);
QDateTime BstToGmt4(QDate(2005,10,30), QTime(2,0,0), Qt::LocalTime);
QDateTime Gmt2(QDate(2005,10,30), QTime(2,30,0), Qt::LocalTime);
KTimeZone london = KSystemTimeZones::zone("Europe/London");
QVERIFY(london.isValid());
int offset2;
QCOMPARE(london.offsetAtZoneTime(Gmt1, &offset2), 0);
QCOMPARE(offset2, 0);
QCOMPARE(london.offsetAtZoneTime(GmtToBst1, &offset2), 0);
QCOMPARE(offset2, 0);
QCOMPARE(london.offsetAtZoneTime(GmtToBst2, &offset2), KTimeZone::InvalidOffset);
QCOMPARE(offset2, KTimeZone::InvalidOffset);
QCOMPARE(london.offsetAtZoneTime(GmtToBst3, &offset2), KTimeZone::InvalidOffset);
QCOMPARE(offset2, KTimeZone::InvalidOffset);
QCOMPARE(london.offsetAtZoneTime(GmtToBst4, &offset2), 3600);
QCOMPARE(offset2, 3600);
QCOMPARE(london.offsetAtZoneTime(Bst1, &offset2), 3600);
QCOMPARE(offset2, 3600);
QCOMPARE(london.offsetAtZoneTime(Bst2, &offset2), 3600);
QCOMPARE(offset2, 3600);
QCOMPARE(london.offsetAtZoneTime(BstToGmt1, &offset2), 3600);
QCOMPARE(offset2, 3600);
QCOMPARE(london.offsetAtZoneTime(BstToGmt2, &offset2), 3600);
QCOMPARE(offset2, 0);
QCOMPARE(london.offsetAtZoneTime(BstToGmt3, &offset2), 3600);
QCOMPARE(offset2, 0);
QCOMPARE(london.offsetAtZoneTime(BstToGmt4, &offset2), 0);
QCOMPARE(offset2, 0);
QCOMPARE(london.offsetAtZoneTime(Gmt2, &offset2), 0);
QCOMPARE(offset2, 0);
KTimeZone johannesburg = KSystemTimeZones::zone("Africa/Johannesburg");
QVERIFY(johannesburg.isValid());
QDateTime recent(QDate(2013,5,10), QTime(13,0,0), Qt::LocalTime);
QCOMPARE(johannesburg.offsetAtZoneTime(recent, &offset2), 7200);
QCOMPARE(offset2, 7200);
}
void KTimeZonesTest::abbreviation()
{
// Fetch time zone abbreviations
KTimeZone losAngeles = KSystemTimeZones::zone("America/Los_Angeles");
QVERIFY(losAngeles.isValid());
KTimeZone london = KSystemTimeZones::zone("Europe/London");
QVERIFY(london.isValid());
QDateTime winter(QDate(2005,1,1), QTime(0,0,0), Qt::UTC);
QDateTime summer(QDate(2005,6,1), QTime(0,0,0), Qt::UTC);
QString sResult = london.abbreviation(winter);
QCOMPARE(london.abbreviation(winter), QByteArray("GMT"));
QCOMPARE(london.abbreviation(summer), QByteArray("BST"));
QCOMPARE(losAngeles.abbreviation(winter), QByteArray("PST"));
QCOMPARE(losAngeles.abbreviation(summer), QByteArray("PDT"));
}
void KTimeZonesTest::timet()
{
QDateTime t1(QDate(1970,1,2), QTime(1,30,5), Qt::UTC);
QDateTime t2(QDate(1969,12,30), QTime(22,29,55), Qt::UTC);
time_t t1t = KTimeZone::toTime_t(t1);
time_t t2t = KTimeZone::toTime_t(t2);
QCOMPARE((int)t1t, 86400 + 3600 + 30*60 + 5);
QCOMPARE((int)t2t, -(86400 + 3600 + 30*60 + 5));
QCOMPARE(KTimeZone::fromTime_t(t1t), t1);
QCOMPARE(KTimeZone::fromTime_t(t2t), t2);
}
void KTimeZonesTest::toUtc()
{
// Convert to UTC.
KTimeZone losAngeles = KSystemTimeZones::zone("America/Los_Angeles");
QVERIFY(losAngeles.isValid());
KTimeZone london = KSystemTimeZones::zone("Europe/London");
QVERIFY(london.isValid());
QDateTime winter(QDate(2005,1,1), QTime(0,0,0), Qt::UTC);
QDateTime summer(QDate(2005,6,1), QTime(0,0,0), Qt::UTC);
QDateTime winterLocal = winter;
winterLocal.setTimeSpec(Qt::LocalTime);
QDateTime summerLocal = summer;
summerLocal.setTimeSpec(Qt::LocalTime);
QCOMPARE(london.toUtc(winterLocal), winter);
QCOMPARE(london.toUtc(summerLocal), summer.addSecs(-3600));;
QCOMPARE(losAngeles.toUtc(winterLocal), winter.addSecs(8*3600));
QCOMPARE(losAngeles.toUtc(summerLocal), summer.addSecs(7*3600));
}
void KTimeZonesTest::toZoneTime()
{
// Convert from UTC.
KTimeZone losAngeles = KSystemTimeZones::zone("America/Los_Angeles");
QVERIFY(losAngeles.isValid());
KTimeZone london = KSystemTimeZones::zone("Europe/London");
QVERIFY(london.isValid());
QDateTime winter(QDate(2005,1,1), QTime(0,0,0), Qt::UTC);
QDateTime summer(QDate(2005,6,1), QTime(0,0,0), Qt::UTC);
QDateTime winterLocal = winter;
winterLocal.setTimeSpec(Qt::LocalTime);
QDateTime summerLocal = summer;
summerLocal.setTimeSpec(Qt::LocalTime);
QCOMPARE(london.toZoneTime(winter), winterLocal);
QCOMPARE(london.toZoneTime(summer), summerLocal.addSecs(3600));
QCOMPARE(losAngeles.toZoneTime(winter), winterLocal.addSecs(-8*3600));
QCOMPARE(losAngeles.toZoneTime(summer), summerLocal.addSecs(-7*3600));
QDateTime prepre(QDate(2005,10,29), QTime(23,59,59), Qt::UTC); // before time shift (local time not repeated)
QDateTime pre(QDate(2005,10,30), QTime(0,0,0), Qt::UTC); // before time shift (local time repeated afterwards)
QDateTime before(QDate(2005,10,30), QTime(0,59,59), Qt::UTC); // before time shift (local time repeated afterwards)
QDateTime at(QDate(2005,10,30), QTime(1,0,0), Qt::UTC); // at time shift (second occurrence of local time)
QDateTime last(QDate(2005,10,30), QTime(1,59,59), Qt::UTC); // after time shift (second occurrence of local time)
QDateTime after(QDate(2005,10,30), QTime(2,0,0), Qt::UTC); // after time shift (local time not repeated)
bool second;
QCOMPARE(london.toZoneTime(prepre, &second), QDateTime(QDate(2005,10,30), QTime(0,59,59), Qt::LocalTime));
QVERIFY(!second);
QCOMPARE(london.toZoneTime(pre, &second), QDateTime(QDate(2005,10,30), QTime(1,0,0), Qt::LocalTime));
QVERIFY(!second);
QCOMPARE(london.toZoneTime(before, &second), QDateTime(QDate(2005,10,30), QTime(1,59,59), Qt::LocalTime));
QVERIFY(!second);
QCOMPARE(london.toZoneTime(at, &second), QDateTime(QDate(2005,10,30), QTime(1,0,0), Qt::LocalTime));
QVERIFY(second);
QCOMPARE(london.toZoneTime(last, &second), QDateTime(QDate(2005,10,30), QTime(1,59,59), Qt::LocalTime));
QVERIFY(second);
QCOMPARE(london.toZoneTime(after, &second), QDateTime(QDate(2005,10,30), QTime(2,0,0), Qt::LocalTime));
QVERIFY(!second);
}
void KTimeZonesTest::convert()
{
// Try time zone conversions.
KTimeZone losAngeles = KSystemTimeZones::zone("America/Los_Angeles");
QVERIFY(losAngeles.isValid());
KTimeZone london = KSystemTimeZones::zone("Europe/London");
QVERIFY(london.isValid());
QDateTime bstBeforePdt(QDate(2005,3,28), QTime(0,0,0), Qt::LocalTime);
QDateTime bstAfterPdt(QDate(2005,5,1), QTime(0,0,0), Qt::LocalTime);
QDateTime gmtBeforePst(QDate(2005,10,30), QTime(4,0,0), Qt::LocalTime);
QDateTime gmtAfterPst(QDate(2005,12,1), QTime(0,0,0), Qt::LocalTime);
QDateTime bstBeforePdtResult(QDate(2005,3,27), QTime(15,0,0), Qt::LocalTime);
QDateTime bstAfterPdtResult(QDate(2005,4,30), QTime(16,0,0), Qt::LocalTime);
QDateTime gmtBeforePstResult(QDate(2005,10,29), QTime(21,0,0), Qt::LocalTime);
QDateTime gmtAfterPstResult(QDate(2005,11,30), QTime(16,0,0), Qt::LocalTime);
QCOMPARE(london.convert(losAngeles, bstBeforePdt), bstBeforePdtResult);
QCOMPARE(london.convert(losAngeles, bstAfterPdt), bstAfterPdtResult);
QCOMPARE(london.convert(losAngeles, gmtBeforePst), gmtBeforePstResult);
QCOMPARE(london.convert(losAngeles, gmtAfterPst), gmtAfterPstResult);
QCOMPARE(losAngeles.convert(losAngeles, bstBeforePdtResult), bstBeforePdtResult);
}
////////////////////////
// KTimeZone tests
// Plus KSystemTimeZones::readZone() tests
////////////////////////
void KTimeZonesTest::tzfile()
{
QDateTime winter(QDate(2005,1,1), QTime(0,0,0), Qt::UTC);
QString zoneinfo = KSystemTimeZones::zoneinfoDir();
const QString zoneinfo = KSystemTimeZones::zoneinfoDir();
QVERIFY(!zoneinfo.isEmpty());
KTimeZoneSource tzsource(zoneinfo);
KTimeZone *tzcairo = new KTimeZone(&tzsource, "Africa/Cairo");
delete tzcairo;
tzcairo = new KTimeZone(&tzsource, "Africa/Cairo");
QCOMPARE(tzcairo->offsetAtUtc(winter), 7200);
delete tzcairo;
KTimeZone *johannesburg = new KTimeZone(&tzsource, "Africa/Johannesburg");
delete johannesburg;
johannesburg = new KTimeZone(&tzsource, "Africa/Johannesburg");
QCOMPARE(johannesburg->offsetAtUtc(winter), 7200);
delete johannesburg;
}
void KTimeZonesTest::tzfileDstShifts()
{
// Check time zone conversions against zdump output for zone
KTimeZoneSource tzsource(KSystemTimeZones::zoneinfoDir());
KTimeZone berlin = KTimeZone(&tzsource, "Europe/Berlin");
KTimeZone losAngeles = KTimeZone(&tzsource, "America/Los_Angeles");
KTimeZone tz = berlin;
for (int n = 0; n < 2; ++n, tz = losAngeles)
{
qDebug() << tz.name();
QVERIFY(tz.isValid());
QFile file(QString::fromLatin1(KDESRCDIR) + tz.name().remove(QRegExp("^.+/")) + QLatin1String(".zdump"));
QVERIFY(file.open(QIODevice::ReadOnly));
QTextStream in(&file);
QString line;
while (!(line = in.readLine()).isNull())
{
QStringList parts = line.split(" ", QString::SkipEmptyParts);
QCOMPARE(parts[6], QString::fromLatin1("UTC"));
QCOMPARE(parts[7], QString::fromLatin1("="));
QCOMPARE(parts[14].left(6), QString::fromLatin1("isdst="));
QCOMPARE(parts[15].left(7), QString::fromLatin1("gmtoff="));
QDateTime utc = QDateTime::fromString(static_cast<QStringList>(parts.mid(1, 5)).join(" "));
utc.setTimeSpec(Qt::UTC);
QDateTime local = QDateTime::fromString(static_cast<QStringList>(parts.mid(8, 5)).join(" "));
local.setTimeSpec(Qt::LocalTime);
QCOMPARE(tz.toZoneTime(utc), local);
QCOMPARE(parts[13], QString::fromLatin1(tz.abbreviation(utc)));
bool dst = (parts[14].right(1) != "0");
QCOMPARE(tz.isDstAtUtc(utc), dst);
QCOMPARE(parts[15].mid(7).toInt(), tz.offsetAtUtc(utc));
}
file.close();
}
}
void KTimeZonesTest::tzfileToZoneTime()
{
// Convert from UTC.
KTimeZoneSource tzsource(KSystemTimeZones::zoneinfoDir());
KTimeZone london = KTimeZone(&tzsource, "Europe/London");
QVERIFY(london.isValid());
QDateTime prepre(QDate(2005,10,29), QTime(23,59,59), Qt::UTC); // before time shift (local time not repeated)
QDateTime pre(QDate(2005,10,30), QTime(0,0,0), Qt::UTC); // before time shift (local time repeated afterwards)
QDateTime before(QDate(2005,10,30), QTime(0,59,59), Qt::UTC); // before time shift (local time repeated afterwards)
QDateTime at(QDate(2005,10,30), QTime(1,0,0), Qt::UTC); // at time shift (second occurrence of local time)
QDateTime last(QDate(2005,10,30), QTime(1,59,59), Qt::UTC); // after time shift (second occurrence of local time)
QDateTime after(QDate(2005,10,30), QTime(2,0,0), Qt::UTC); // after time shift (local time not repeated)
bool second;
QCOMPARE(london.toZoneTime(prepre, &second), QDateTime(QDate(2005,10,30), QTime(0,59,59), Qt::LocalTime));
QVERIFY(!second);
QCOMPARE(london.toZoneTime(pre, &second), QDateTime(QDate(2005,10,30), QTime(1,0,0), Qt::LocalTime));
QVERIFY(!second);
QCOMPARE(london.toZoneTime(before, &second), QDateTime(QDate(2005,10,30), QTime(1,59,59), Qt::LocalTime));
QVERIFY(!second);
QCOMPARE(london.toZoneTime(at, &second), QDateTime(QDate(2005,10,30), QTime(1,0,0), Qt::LocalTime));
QVERIFY(second);
QCOMPARE(london.toZoneTime(last, &second), QDateTime(QDate(2005,10,30), QTime(1,59,59), Qt::LocalTime));
QVERIFY(second);
QCOMPARE(london.toZoneTime(after, &second), QDateTime(QDate(2005,10,30), QTime(2,0,0), Qt::LocalTime));
QVERIFY(!second);
KTimeZone sysLondon = KSystemTimeZones::readZone("Europe/London");
QVERIFY(sysLondon.isValid());
QCOMPARE(sysLondon.toZoneTime(prepre, &second), QDateTime(QDate(2005,10,30), QTime(0,59,59), Qt::LocalTime));
QVERIFY(!second);
QCOMPARE(sysLondon.toZoneTime(pre, &second), QDateTime(QDate(2005,10,30), QTime(1,0,0), Qt::LocalTime));
QVERIFY(!second);
QCOMPARE(sysLondon.toZoneTime(before, &second), QDateTime(QDate(2005,10,30), QTime(1,59,59), Qt::LocalTime));
QVERIFY(!second);
QCOMPARE(sysLondon.toZoneTime(at, &second), QDateTime(QDate(2005,10,30), QTime(1,0,0), Qt::LocalTime));
QVERIFY(second);
QCOMPARE(sysLondon.toZoneTime(last, &second), QDateTime(QDate(2005,10,30), QTime(1,59,59), Qt::LocalTime));
QVERIFY(second);
QCOMPARE(sysLondon.toZoneTime(after, &second), QDateTime(QDate(2005,10,30), QTime(2,0,0), Qt::LocalTime));
QVERIFY(!second);
}
void KTimeZonesTest::tzfileOffsetAtUtc()
{
QDateTime a3Gmt(QDate(2004,12,27), QTime(0,30,0), Qt::UTC);
QDateTime a2Gmt(QDate(2005,2,27), QTime(0,30,0), Qt::UTC);
QDateTime aGmt(QDate(2005,3,27), QTime(0,30,0), Qt::UTC);
QDateTime aBst(QDate(2005,3,27), QTime(1,30,0), Qt::UTC);
QDateTime a2Bst(QDate(2005,7,27), QTime(2,30,0), Qt::UTC);
QDateTime bBst(QDate(2005,10,29), QTime(23,30,0), Qt::UTC);
QDateTime bBstBeforeGmt(QDate(2005,10,30), QTime(0,30,0), Qt::UTC);
QDateTime bGmt(QDate(2005,10,30), QTime(2,30,0), Qt::UTC);
KTimeZoneSource tzsource(KSystemTimeZones::zoneinfoDir());
KTimeZone london = KTimeZone(&tzsource, "Europe/London");
QVERIFY(london.isValid());
QCOMPARE(london.offsetAtUtc(a3Gmt), 0);
QCOMPARE(london.offsetAtUtc(a2Gmt), 0); // uses cache
QCOMPARE(london.offsetAtUtc(aGmt), 0); // uses cache
QCOMPARE(london.offsetAtUtc(aBst), 3600);
QCOMPARE(london.offsetAtUtc(a2Bst), 3600); // uses cache
QCOMPARE(london.offsetAtUtc(bBst), 3600); // uses cache
QCOMPARE(london.offsetAtUtc(bBstBeforeGmt), 3600); // uses cache
QCOMPARE(london.offsetAtUtc(bGmt), 0);
QDateTime recent(QDate(2013,5,10), QTime(13,0,0), Qt::UTC);
KTimeZone johannesburg = KTimeZone(&tzsource, "Africa/Johannesburg");
QVERIFY(johannesburg.isValid());
QCOMPARE(johannesburg.offsetAtUtc(recent), 7200);
}
void KTimeZonesTest::tzfileOffsetAtZoneTime()
{
QDateTime Gmt0(QDate(2005,2,27), QTime(0,30,0), Qt::LocalTime);
QDateTime Gmt1(QDate(2005,3,27), QTime(0,30,0), Qt::LocalTime);
QDateTime GmtToBst1(QDate(2005,3,27), QTime(0,59,59), Qt::LocalTime);
QDateTime GmtToBst2(QDate(2005,3,27), QTime(1,0,0), Qt::LocalTime);
QDateTime GmtToBst3(QDate(2005,3,27), QTime(1,59,59), Qt::LocalTime);
QDateTime GmtToBst4(QDate(2005,3,27), QTime(2,0,0), Qt::LocalTime);
QDateTime Bst1(QDate(2005,4,27), QTime(2,30,0), Qt::LocalTime);
QDateTime Bst2(QDate(2005,10,30), QTime(0,30,0), Qt::LocalTime);
QDateTime BstToGmt1(QDate(2005,10,30), QTime(0,59,59), Qt::LocalTime);
QDateTime BstToGmt2(QDate(2005,10,30), QTime(1,0,0), Qt::LocalTime);
QDateTime BstToGmt3(QDate(2005,10,30), QTime(1,59,59), Qt::LocalTime);
QDateTime BstToGmt4(QDate(2005,10,30), QTime(2,0,0), Qt::LocalTime);
QDateTime Gmt2(QDate(2005,10,30), QTime(2,30,0), Qt::LocalTime);
KTimeZoneSource tzsource(KSystemTimeZones::zoneinfoDir());
KTimeZone london = KTimeZone(&tzsource, "Europe/London");
QVERIFY(london.isValid());
int offset2;
QCOMPARE(london.offsetAtZoneTime(Gmt0, &offset2), 0);
QCOMPARE(offset2, 0);
QCOMPARE(london.offsetAtZoneTime(Gmt1, &offset2), 0); // uses cache
QCOMPARE(offset2, 0);
QCOMPARE(london.offsetAtZoneTime(GmtToBst1, &offset2), 0); // uses cache
QCOMPARE(offset2, 0);
QCOMPARE(london.offsetAtZoneTime(GmtToBst2, &offset2), KTimeZone::InvalidOffset);
QCOMPARE(offset2, KTimeZone::InvalidOffset);
QCOMPARE(london.offsetAtZoneTime(GmtToBst3, &offset2), KTimeZone::InvalidOffset);
QCOMPARE(offset2, KTimeZone::InvalidOffset);
QCOMPARE(london.offsetAtZoneTime(GmtToBst4, &offset2), 3600);
QCOMPARE(offset2, 3600);
QCOMPARE(london.offsetAtZoneTime(Bst1, &offset2), 3600);
QCOMPARE(offset2, 3600);
QCOMPARE(london.offsetAtZoneTime(Bst2, &offset2), 3600); // uses cache
QCOMPARE(offset2, 3600);
QCOMPARE(london.offsetAtZoneTime(BstToGmt1, &offset2), 3600); // uses cache
QCOMPARE(offset2, 3600);
QCOMPARE(london.offsetAtZoneTime(BstToGmt2, &offset2), 3600);
QCOMPARE(offset2, 0);
QCOMPARE(london.offsetAtZoneTime(BstToGmt3, &offset2), 3600);
QCOMPARE(offset2, 0);
QCOMPARE(london.offsetAtZoneTime(BstToGmt4, &offset2), 0);
QCOMPARE(offset2, 0);
QCOMPARE(london.offsetAtZoneTime(Gmt2, &offset2), 0); // uses cache
QCOMPARE(offset2, 0);
KTimeZone sysLondon = KSystemTimeZones::readZone("Europe/London");
QVERIFY(sysLondon.isValid());
QCOMPARE(sysLondon.offsetAtZoneTime(Gmt0, &offset2), 0);
QCOMPARE(offset2, 0);
QCOMPARE(sysLondon.offsetAtZoneTime(Gmt1, &offset2), 0); // uses cache
QCOMPARE(offset2, 0);
QCOMPARE(sysLondon.offsetAtZoneTime(GmtToBst1, &offset2), 0); // uses cache
QCOMPARE(offset2, 0);
QCOMPARE(sysLondon.offsetAtZoneTime(GmtToBst2, &offset2), KTimeZone::InvalidOffset);
QCOMPARE(offset2, KTimeZone::InvalidOffset);
QCOMPARE(sysLondon.offsetAtZoneTime(GmtToBst3, &offset2), KTimeZone::InvalidOffset);
QCOMPARE(offset2, KTimeZone::InvalidOffset);
QCOMPARE(sysLondon.offsetAtZoneTime(GmtToBst4, &offset2), 3600);
QCOMPARE(offset2, 3600);
QCOMPARE(sysLondon.offsetAtZoneTime(Bst1, &offset2), 3600);
QCOMPARE(offset2, 3600);
QCOMPARE(sysLondon.offsetAtZoneTime(Bst2, &offset2), 3600); // uses cache
QCOMPARE(offset2, 3600);
QCOMPARE(sysLondon.offsetAtZoneTime(BstToGmt1, &offset2), 3600); // uses cache
QCOMPARE(offset2, 3600);
QCOMPARE(sysLondon.offsetAtZoneTime(BstToGmt2, &offset2), 3600);
QCOMPARE(offset2, 0);
QCOMPARE(sysLondon.offsetAtZoneTime(BstToGmt3, &offset2), 3600);
QCOMPARE(offset2, 0);
QCOMPARE(sysLondon.offsetAtZoneTime(BstToGmt4, &offset2), 0);
QCOMPARE(offset2, 0);
QCOMPARE(sysLondon.offsetAtZoneTime(Gmt2, &offset2), 0); // uses cache
QCOMPARE(offset2, 0);
KTimeZone johannesburg = KTimeZone(&tzsource, "Africa/Johannesburg");
QVERIFY(johannesburg.isValid());
QDateTime recent(QDate(2013,5,10), QTime(13,0,0), Qt::LocalTime);
QCOMPARE(johannesburg.offsetAtZoneTime(recent, &offset2), 7200);
QCOMPARE(offset2, 7200);
}
void KTimeZonesTest::tzfileUtcOffsets()
{
KTimeZoneSource tzsource(KSystemTimeZones::zoneinfoDir());
KTimeZone london = KTimeZone(&tzsource, "Europe/London");
QVERIFY(london.isValid());
QList<int> offsets = london.utcOffsets();
QCOMPARE(offsets.count(), 3);
QCOMPARE(offsets[0], 0); // GMT
QCOMPARE(offsets[1], 3600); // BST
QCOMPARE(offsets[2], 7200); // DST
KTimeZone sysLondon = KSystemTimeZones::readZone("Europe/London");
QVERIFY(sysLondon.isValid());
offsets = sysLondon.utcOffsets();
QCOMPARE(offsets.count(), 3);
QCOMPARE(offsets[0], 0); // GMT
QCOMPARE(offsets[1], 3600); // BST
QCOMPARE(offsets[2], 7200); // DST
}
void KTimeZonesTest::tzfileAbbreviation()
{
KTimeZoneSource tzsource(KSystemTimeZones::zoneinfoDir());
KTimeZone london = KTimeZone(&tzsource, "Europe/London");
QVERIFY(london.isValid());
QDateTime winter(QDate(2005,1,1), QTime(0,0,0), Qt::UTC);
QDateTime summer(QDate(2005,6,1), QTime(0,0,0), Qt::UTC);
QDateTime standard(QDate(1970,4,30), QTime(12,45,16,25), Qt::UTC);
QString sResult = london.abbreviation(winter);
QCOMPARE(london.abbreviation(winter), QByteArray("GMT"));
QCOMPARE(london.abbreviation(summer), QByteArray("BST"));
QCOMPARE(london.abbreviation(standard), QByteArray("BST"));
KTimeZone sysLondon = KSystemTimeZones::readZone("Europe/London");
QVERIFY(sysLondon.isValid());
sResult = sysLondon.abbreviation(winter);
QCOMPARE(sysLondon.abbreviation(winter), QByteArray("GMT"));
QCOMPARE(sysLondon.abbreviation(summer), QByteArray("BST"));
QCOMPARE(sysLondon.abbreviation(standard), QByteArray("BST"));
}
void KTimeZonesTest::tzfileTransitions()
{
KTimeZoneSource tzsource(KSystemTimeZones::zoneinfoDir());
KTimeZone london = KTimeZone(&tzsource, "Europe/London");
QVERIFY(london.isValid());
QList<KTimeZone::Transition> all = london.transitions();
QVERIFY(!all.isEmpty());
QDateTime jan2003(QDate(2003,1,1),QTime(0,0,0),Qt::UTC);
QDateTime jan2006(QDate(2006,1,1),QTime(0,0,0),Qt::UTC);
int index2006 = london.transitionIndex(jan2006);
if (index2006 >= 0)
{
QVERIFY(all[index2006].time() <= jan2006);
QList<KTimeZone::Transition> some = london.transitions(QDateTime(), jan2006);
QList<KTimeZone::Transition> check = all.mid(0, index2006+1);
QCOMPARE(some.count(), check.count());
for (int i = 0; i < some.count(); ++i)
{
QCOMPARE(some[i].time(), check[i].time());
QCOMPARE(some[i].phase(), check[i].phase());
}
if (all[index2006].time() < jan2006 && ++index2006 < all.count())
QVERIFY(all[index2006].time() > jan2006);
some = london.transitions(jan2006);
check = all.mid(index2006);
for (int i = 0; i < some.count(); ++i)
{
QCOMPARE(some[i].time(), check[i].time());
QCOMPARE(some[i].phase(), check[i].phase());
}
}
index2006 = london.transitionIndex(jan2006);
int index2003 = london.transitionIndex(jan2003);
if (index2003 >= 0)
{
QVERIFY(all[index2003].time() <= jan2003);
if (all[index2003].time() < jan2003 && ++index2003 < all.count())
QVERIFY(all[index2003].time() > jan2003);
QList<KTimeZone::Transition> some = london.transitions(jan2003, jan2006);
QList<KTimeZone::Transition> check = all.mid(index2003, index2006-index2003+1);
QCOMPARE(some.count(), check.count());
for (int i = 0; i < some.count(); ++i)
{
QCOMPARE(some[i].time(), check[i].time());
QCOMPARE(some[i].phase(), check[i].phase());
}
}
}
#include "moc_ktimezonestest.cpp"

View file

@ -28,33 +28,11 @@ class KTimeZonesTest : public QObject
private Q_SLOTS:
void initTestCase();
void cleanupTestCase();
void ktimezones();
void refcount();
void utc();
void local();
void zone();
void zoneinfoDir();
void zonetabChange();
void currentOffset();
void offsetAtUtc();
void offsetAtZoneTime();
void abbreviation();
void timet();
void toUtc();
void toZoneTime();
void convert();
void tzfile();
void tzfileDstShifts();
void tzfileToZoneTime();
void tzfileOffsetAtUtc();
void tzfileOffsetAtZoneTime();
void tzfileUtcOffsets();
void tzfileAbbreviation();
void tzfileTransitions();
private:
void removeDir(const QString &subdir);
void writeZoneTab(bool testcase);
QString mDataDir;
};
#endif

View file

@ -1,111 +0,0 @@
/* This file is part of the KDE libraries
Copyright (c) 2005-2007 David Jarvie <software@astrojar.org.uk>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef KTIMEZONESTEST_P_H
#define KTIMEZONESTEST_P_H
#include <QDebug>
#include <QDir>
#include <QTextStream>
#include "qtest_kde.h"
class TimeZoneTestData
{
public:
QString dataDir() const { return mDataDir; }
void cleanupTimeZoneTest()
{
removeDir(QLatin1String("ktimezonestest/Africa"));
removeDir(QLatin1String("ktimezonestest/America"));
removeDir(QLatin1String("ktimezonestest/Asia"));
removeDir(QLatin1String("ktimezonestest/Europe"));
removeDir(QLatin1String("ktimezonestest"));
::unsetenv("TZ");
::tzset();
}
void setupTimeZoneTest()
{
cleanupTimeZoneTest();
mDataDir = QDir::homePath() + "/.kde-unit-test/ktimezonestest";
QVERIFY(QDir().mkpath(mDataDir));
writeZoneTab(false);
QDir dir(mDataDir);
QVERIFY(dir.mkdir("Africa"));
QVERIFY(QFile::copy(QString::fromLatin1(KDESRCDIR) + QLatin1String("/Cairo"), mDataDir + QLatin1String("/Africa/Cairo")));
QVERIFY(QFile::copy(QString::fromLatin1(KDESRCDIR) + QLatin1String("/Johannesburg"), mDataDir + QLatin1String("/Africa/Johannesburg")));
QVERIFY(dir.mkdir("America"));
QFile::copy(QString::fromLatin1(KDESRCDIR) + QLatin1String("/Los_Angeles"), mDataDir + QLatin1String("/America/Los_Angeles"));
QVERIFY(dir.mkdir("Asia"));
QFile::copy(QString::fromLatin1(KDESRCDIR) + QLatin1String("/Dili"), mDataDir + QLatin1String("/Asia/Dili"));
QVERIFY(dir.mkdir("Europe"));
QFile::copy(QString::fromLatin1(KDESRCDIR) + QLatin1String("/Berlin"), mDataDir + QLatin1String("/Europe/Berlin"));
QFile::copy(QString::fromLatin1(KDESRCDIR) + QLatin1String("/London"), mDataDir + QLatin1String("/Europe/London"));
QFile::copy(QString::fromLatin1(KDESRCDIR) + QLatin1String("/Paris"), mDataDir + QLatin1String("/Europe/Paris"));
const QByteArray mDataDirBytes = mDataDir.toLocal8Bit();
::setenv("KDE_ZONEINFO_DIR", mDataDirBytes.constData(), 1);
::setenv("TZ", ":Europe/Paris", 1);
::tzset();
}
private:
void removeDir(const QString &subdir)
{
QDir local(QDir::homePath() + QLatin1String("/.kde-unit-test/") + subdir);
foreach(const QString &file, local.entryList(QDir::Files))
if(!local.remove(file))
qWarning("%s: removing failed", qPrintable( file ));
QCOMPARE((int)local.entryList(QDir::Files).count(), 0);
local.cdUp();
QString subd = subdir;
subd.remove(QRegExp("^.*/"));
local.rmpath(subd);
}
public:
void writeZoneTab(bool testcase)
{
QFile f(mDataDir + QLatin1String("/zone.tab"));
qDebug() << "Writing" << f.fileName();
QVERIFY(f.open(QIODevice::WriteOnly));
QTextStream fStream(&f);
if (testcase)
fStream << "DE +5230+01322 Europe/Berlin\n"
"EG +3003+03115 Africa/Cairo\n"
"FR +4852+00220 Europe/Paris\n"
"XX -512830+0001845 Europe/London Greater Britain\n"
"TL -0833+12535 Asia/Dili\n"
"US +340308-1181434 America/Los_Angeles Pacific Time\n"
"ZA -2615+02800 Africa/Johannesburg\n";
else
fStream << "EG +3003+03115 Africa/Cairo\n"
"FR +4852+00220 Europe/Paris\n"
"GB +512830-0001845 Europe/London Great Britain\n"
"US +340308-1181434 America/Los_Angeles Pacific Time\n"
"ZA -2615+02800 Africa/Johannesburg\n";
f.close();
}
QString mDataDir;
};
#endif //KTIMEZONESTEST_P_H

View file

@ -213,10 +213,10 @@ void KDateTimeEditTest::testTimeSpec()
QCOMPARE(m_edit->timeSpec(), KDateTime::currentLocalDateTime().timeSpec());
QCOMPARE(m_edit->timeZones(), KSystemTimeZones::zones());
KTimeZones::ZoneMap map;
map.insert("Africa/Cairo", KSystemTimeZones::zone("Africa/Cairo"));
m_edit->setTimeZones(map);
QCOMPARE(m_edit->timeZones(), map);
KTimeZoneList list;
list.append(KSystemTimeZones::zone("Africa/Cairo"));
m_edit->setTimeZones(list);
QCOMPARE(m_edit->timeZones(), list);
delete m_edit;
}

View file

@ -20,7 +20,6 @@
#include "qtest_kde.h"
#include <ktimezonewidget.h>
#include <kconfiggroup.h>
#include "../../kdecore/tests/ktimezonestest_p.h"
class KTimeZoneWidgetTest : public QObject
{
@ -33,12 +32,10 @@ private Q_SLOTS:
void initTestCase()
{
//mTestData.setupTimeZoneTest(); // see ktimezonestest_p.h
}
void cleanupTestCase()
{
//mTestData.cleanupTimeZoneTest();
}
void testSetSelected()
@ -92,9 +89,6 @@ private Q_SLOTS:
tzw.setSelected("America/Los_Angeles", true);
QCOMPARE(tzw.selection(), QStringList() << "America/Los_Angeles" << "Europe/Paris");
}
private:
// Because we don't use a separate KDEHOME, we can't use TimeZoneTestData.
//TimeZoneTestData mTestData;
};
// Tricky problem. The kded module writes out a config file, but unit tests have

View file

@ -73,7 +73,7 @@ public:
QString m_maxWarnMsg;
QList<KLocale::CalendarSystem> m_calendarSystems;
KTimeZones::ZoneMap m_zones;
KTimeZoneList m_zones;
Ui::KDateTimeEdit ui;
};
@ -194,15 +194,13 @@ void KDateTimeEditPrivate::initTimeSpecWidget()
ui.m_timeSpecCombo->clear();
ui.m_timeSpecCombo->addItem(i18nc("UTC time zone", "UTC"), "UTC");
ui.m_timeSpecCombo->addItem(i18nc("No specific time zone", "Floating"), "Floating");
QStringList keys = m_zones.keys();
QMap<QString, QString> names;
foreach (const QString &key, keys) {
names.insert(i18n(key.toUtf8()).replace('_', ' '), key);
}
QMapIterator<QString, QString> i(names);
while (i.hasNext()) {
i.next();
ui.m_timeSpecCombo->addItem(i.key(), i.value());
foreach (const KTimeZone &zone, m_zones) {
if (zone.name() == QLatin1String("UTC")) {
// already added above as the first item
continue;
}
const QString zonename = i18n(zone.name().toUtf8()).replace('_', ' ');
ui.m_timeSpecCombo->addItem(zonename, zone.name());
}
ui.m_timeSpecCombo->setVisible((m_options &KDateTimeEdit::ShowTimeSpec) == KDateTimeEdit::ShowTimeSpec);
ui.m_timeSpecCombo->setEnabled((m_options &KDateTimeEdit::SelectTimeSpec) == KDateTimeEdit::SelectTimeSpec);
@ -223,7 +221,12 @@ void KDateTimeEditPrivate::selectTimeZone(int index)
void KDateTimeEditPrivate::enterTimeZone(const QString &zone)
{
q->setDateTime(KDateTime::currentDateTime(m_zones.value(zone)));
foreach (const KTimeZone &it, m_zones) {
if (it.name() == zone) {
q->setDateTime(KDateTime::currentDateTime(it));
break;
}
}
}
void KDateTimeEditPrivate::warnDateTime()
@ -562,7 +565,7 @@ QList<QTime> KDateTimeEdit::timeList() const
return d->ui.m_timeCombo->timeList();
}
void KDateTimeEdit::setTimeZones(const KTimeZones::ZoneMap &zones)
void KDateTimeEdit::setTimeZones(const KTimeZoneList &zones)
{
if (zones != d->m_zones) {
d->m_zones = zones;
@ -570,7 +573,7 @@ void KDateTimeEdit::setTimeZones(const KTimeZones::ZoneMap &zones)
}
}
KTimeZones::ZoneMap KDateTimeEdit::timeZones() const
KTimeZoneList KDateTimeEdit::timeZones() const
{
return d->m_zones;
}

View file

@ -206,7 +206,7 @@ public:
*
* @param zones the time zones to display
*/
KTimeZones::ZoneMap timeZones() const;
KTimeZoneList timeZones() const;
/**
* Return if the current user input is valid
@ -579,7 +579,7 @@ public Q_SLOTS:
*
* @param zones the time zones to display
*/
void setTimeZones(const KTimeZones::ZoneMap &zones);
void setTimeZones(const KTimeZoneList &zones);
protected:

View file

@ -56,7 +56,7 @@ static bool timeZoneLocaleLessThan (const QString &a, const QString &b)
return QString::localeAwareCompare(a, b) < 0;
}
KTimeZoneWidget::KTimeZoneWidget( QWidget *parent, KTimeZones *db )
KTimeZoneWidget::KTimeZoneWidget( QWidget *parent )
: QTreeWidget( parent ),
d(new KTimeZoneWidget::Private)
{
@ -68,18 +68,7 @@ KTimeZoneWidget::KTimeZoneWidget( QWidget *parent, KTimeZones *db )
QStringList cities;
QHash<QString, KTimeZone> zonesByCity;
if (!db) {
db = KSystemTimeZones::timeZones();
// add UTC to the defaults default
KTimeZone utc = KTimeZone::utc();
cities.append(utc.name());
zonesByCity.insert(utc.name(), utc);
}
const KTimeZones::ZoneMap zones = db->zones();
for ( KTimeZones::ZoneMap::ConstIterator it = zones.begin(); it != zones.end(); ++it ) {
const KTimeZone zone = it.value();
foreach (const KTimeZone &zone, KSystemTimeZones::zones()) {
const QString continentCity = displayName( zone );
const int separator = continentCity.lastIndexOf('/');
// Make up the localized key that will be used for sorting.

View file

@ -67,10 +67,8 @@ class KDEUI_EXPORT KTimeZoneWidget : public QTreeWidget
* Constructs a time zone selection widget.
*
* @param parent The parent widget.
* @param timeZones The time zone database to use. If 0, the system time zone
* database is used.
*/
explicit KTimeZoneWidget( QWidget *parent = 0, KTimeZones *timeZones = 0 );
explicit KTimeZoneWidget( QWidget *parent = 0 );
/**
* Destroys the time zone selection widget.

View file

@ -297,7 +297,7 @@ Group=Input (KDE)
[KTimeZoneWidget]
ToolTip=This widget can be used to display or allow user selection of timezones. (KDE)
IncludeFile=ktimezonewidget.h
ConstructorArgs=(parent, new KTimeZones())
ConstructorArgs=(parent)
Group=Input (KDE)
[KTitleWidget]