diff --git a/mythtv/libs/libmythbase/mthread.cpp b/mythtv/libs/libmythbase/mthread.cpp
index 8764d1e..609d22a 100644
--- a/mythtv/libs/libmythbase/mthread.cpp
+++ b/mythtv/libs/libmythbase/mthread.cpp
@@ -32,9 +32,10 @@ using namespace std;
 // MythTV headers
 #include "mythlogging.h"
 #include "mythdbcon.h"
-#include "mthread.h"
 #include "mythtimer.h"
+#include "mythdate.h"
 #include "logging.h"
+#include "mthread.h"
 #include "mythdb.h"
 
 bool is_current_thread(MThread *thread)
@@ -227,8 +228,7 @@ void MThread::RunEpilog(void)
 void MThread::ThreadSetup(const QString &name)
 {
     loggingRegisterThread(name);
-    qsrand(QDateTime::currentDateTime().toTime_t() ^
-           QTime::currentTime().msec());
+    qsrand(MythDate::current().toTime_t() ^ QTime::currentTime().msec());
 }
 
 void MThread::ThreadCleanup(void)
diff --git a/mythtv/libs/libmythbase/mythcommandlineparser.cpp b/mythtv/libs/libmythbase/mythcommandlineparser.cpp
index c269a83..3bbac88 100644
--- a/mythtv/libs/libmythbase/mythcommandlineparser.cpp
+++ b/mythtv/libs/libmythbase/mythcommandlineparser.cpp
@@ -2443,8 +2443,8 @@ QString MythCommandLineParser::GetLogFilePath(void)
 
     logdir  = finfo.filePath();
     logfile = QCoreApplication::applicationName() + "." +
-              QDateTime::currentDateTime().toString("yyyyMMddhhmmss") +
-              QString(".%1").arg(pid) + ".log";
+        MythDate::toString(MythDate::current(), MythDate::kFilename) +
+        QString(".%1").arg(pid) + ".log";
 
     SetValue("logdir", logdir);
     SetValue("logfile", logfile);
diff --git a/mythtv/libs/libmythbase/mythcorecontext.cpp b/mythtv/libs/libmythbase/mythcorecontext.cpp
index f7896b6..61b86b7 100644
--- a/mythtv/libs/libmythbase/mythcorecontext.cpp
+++ b/mythtv/libs/libmythbase/mythcorecontext.cpp
@@ -39,6 +39,7 @@ using namespace std;
 #include "logging.h"
 #include "mthread.h"
 #include "serverpool.h"
+#include "mythdate.h"
 
 #define LOC      QString("MythCoreContext: ")
 
@@ -106,8 +107,7 @@ MythCoreContextPrivate::MythCoreContextPrivate(MythCoreContext *lparent,
       m_blockingClient(false)
 {
     MThread::ThreadSetup("CoreContext");
-    srandom(QDateTime::currentDateTime().toTime_t() ^
-            QTime::currentTime().msec());
+    srandom(MythDate::current().toTime_t() ^ QTime::currentTime().msec());
 }
 
 MythCoreContextPrivate::~MythCoreContextPrivate()
diff --git a/mythtv/libs/libmythtv/AirPlay/mythairplayserver.cpp b/mythtv/libs/libmythtv/AirPlay/mythairplayserver.cpp
index d837067..9493288 100644
--- a/mythtv/libs/libmythtv/AirPlay/mythairplayserver.cpp
+++ b/mythtv/libs/libmythtv/AirPlay/mythairplayserver.cpp
@@ -9,6 +9,7 @@
 #include <QKeyEvent>
 
 #include "mthread.h"
+#include "mythdate.h"
 #include "mythlogging.h"
 #include "mythcorecontext.h"
 #include "mythuiactions.h"
@@ -742,7 +743,7 @@ void MythAirplayServer::SendResponse(QTcpSocket *socket,
     reply.append(StatusToString(status));
     reply.append("\r\n");
     reply.append("DATE: ");
-    reply.append(QDateTime::currentDateTime().toString("ddd, d MMM yyyy hh:mm:ss"));
+    reply.append(MythDate::current().toString("ddd, d MMM yyyy hh:mm:ss"));
     reply.append(" GMT\r\n");
     if (header.size())
         reply.append(header);
diff --git a/mythtv/libs/libmythtv/HLS/httplivestream.cpp b/mythtv/libs/libmythtv/HLS/httplivestream.cpp
index f297e7a..0978d40 100644
--- a/mythtv/libs/libmythtv/HLS/httplivestream.cpp
+++ b/mythtv/libs/libmythtv/HLS/httplivestream.cpp
@@ -29,6 +29,7 @@
 #include <QUrl>
 
 #include "mythcorecontext.h"
+#include "mythdate.h"
 #include "mythdirs.h"
 #include "mythtimer.h"
 #include "mthreadpool.h"
@@ -101,8 +102,8 @@ HTTPLiveStream::HTTPLiveStream(QString srcFile, uint16_t width, uint16_t height,
     m_bitrate(bitrate),
     m_audioBitrate(abitrate),    m_audioOnlyBitrate(aobitrate),
     m_sampleRate(srate),
-    m_created(QDateTime::currentDateTime()),
-    m_lastModified(QDateTime::currentDateTime()),
+    m_created(MythDate::current()),
+    m_lastModified(MythDate::current()),
     m_percentComplete(0),
     m_status(kHLSStatusUndefined)
 {
@@ -671,8 +672,8 @@ bool HTTPLiveStream::LoadFromDB(void)
     m_curSegment         = query.value(7).toUInt();
     m_segmentCount       = query.value(8).toUInt();
     m_percentComplete    = query.value(9).toUInt();
-    m_created            = query.value(10).toDateTime();
-    m_lastModified       = query.value(11).toDateTime();
+    m_created            = MythDate::as_utc(query.value(10).toDateTime());
+    m_lastModified       = MythDate::as_utc(query.value(11).toDateTime());
     m_relativeURL        = query.value(12).toString();
     m_fullURL            = query.value(13).toString();
     m_status             = (HTTPLiveStreamStatus)(query.value(14).toInt());
diff --git a/mythtv/libs/libmythtv/osd.cpp b/mythtv/libs/libmythtv/osd.cpp
index 6b2f09f..d75e231 100644
--- a/mythtv/libs/libmythtv/osd.cpp
+++ b/mythtv/libs/libmythtv/osd.cpp
@@ -498,7 +498,7 @@ void OSD::SetText(const QString &window, QHash<QString,QString> &map,
     {
         int startts = map["startts"].toInt();
         int endts   = map["endts"].toInt();
-        int nowts   = QDateTime::currentDateTime().toTime_t();
+        int nowts   = MythDate::current().toTime_t();
         if (startts > nowts)
         {
             bar->SetUsed(0);
diff --git a/mythtv/libs/libmythtv/recordingrule.cpp b/mythtv/libs/libmythtv/recordingrule.cpp
index e0a0872..434ebba 100644
--- a/mythtv/libs/libmythtv/recordingrule.cpp
+++ b/mythtv/libs/libmythtv/recordingrule.cpp
@@ -180,9 +180,9 @@ bool RecordingRule::Load(bool asTemplate)
     // and influence watch list weighting
     if (!asTemplate)
     {
-        m_nextRecording = query.value(43).toDateTime();
-        m_lastRecorded = query.value(44).toDateTime();
-        m_lastDeleted = query.value(45).toDateTime();
+        m_nextRecording = MythDate::as_utc(query.value(43).toDateTime());
+        m_lastRecorded = MythDate::as_utc(query.value(44).toDateTime());
+        m_lastDeleted = MythDate::as_utc(query.value(45).toDateTime());
         m_averageDelay = query.value(46).toInt();
     }
 
diff --git a/mythtv/libs/libmythui/mythuiclock.cpp b/mythtv/libs/libmythui/mythuiclock.cpp
index 422d143..7892174 100644
--- a/mythtv/libs/libmythui/mythuiclock.cpp
+++ b/mythtv/libs/libmythui/mythuiclock.cpp
@@ -73,7 +73,7 @@ void MythUIClock::SetText(const QString &text)
 
     if (txt.isEmpty())
     {
-        m_Time = QDateTime::currentDateTime();
+        m_Time = MythDate::current();
         txt = GetTimeText();
     }
 
diff --git a/mythtv/programs/mythbackend/services/channel.cpp b/mythtv/programs/mythbackend/services/channel.cpp
index 555d670..386a18d 100644
--- a/mythtv/programs/mythbackend/services/channel.cpp
+++ b/mythtv/programs/mythbackend/services/channel.cpp
@@ -38,6 +38,7 @@
 #include "sourceutil.h"
 #include "cardutil.h"
 #include "datadirect.h"
+#include "mythdate.h"
 
 #include "serviceUtil.h"
 
@@ -562,7 +563,8 @@ DTC::VideoMultiplexList* Channel::GetVideoMultiplexList( int nSourceID,
             pVideoMultiplex->setRollOff(            query.value(19).toString()      );
             pVideoMultiplex->setSIStandard(         query.value(20).toString()      );
             pVideoMultiplex->setServiceVersion(     query.value(21).toInt()         );
-            pVideoMultiplex->setUpdateTimeStamp(    query.value(22).toDateTime()    );
+            pVideoMultiplex->setUpdateTimeStamp(
+                MythDate::as_utc(query.value(22).toDateTime()));
             pVideoMultiplex->setDefaultAuthority(   query.value(23).toString()      );
         }
     }
@@ -642,7 +644,8 @@ DTC::VideoMultiplex* Channel::GetVideoMultiplex( int nMplexID )
         pVideoMultiplex->setRollOff(            query.value(18).toString()      );
         pVideoMultiplex->setSIStandard(         query.value(19).toString()      );
         pVideoMultiplex->setServiceVersion(     query.value(20).toInt()         );
-        pVideoMultiplex->setUpdateTimeStamp(    query.value(21).toDateTime()    );
+        pVideoMultiplex->setUpdateTimeStamp(
+            MythDate::as_utc(query.value(21).toDateTime()));
         pVideoMultiplex->setDefaultAuthority(   query.value(22).toString()      );
     }
 
diff --git a/mythtv/programs/mythbackend/services/dvr.cpp b/mythtv/programs/mythbackend/services/dvr.cpp
index 9582bd4..fd36f2f 100644
--- a/mythtv/programs/mythbackend/services/dvr.cpp
+++ b/mythtv/programs/mythbackend/services/dvr.cpp
@@ -37,6 +37,7 @@
 #include "jobqueue.h"
 #include "encoderlink.h"
 #include "remoteutil.h"
+#include "mythdate.h"
 
 #include "serviceUtil.h"
 #include <mythscheduler.h>
@@ -323,13 +324,12 @@ DTC::ProgramList* Dvr::GetUpcomingList( int  nStartIndex,
     for(; it < tmpList.end(); ++it)
     {
         if (!bShowAll && ((*it)->GetRecordingStatus() <= rsWillRecord) &&
-            ((*it)->GetRecordingStartTime() >=
-             QDateTime::currentDateTime()))
+            ((*it)->GetRecordingStartTime() >= MythDate::current()))
         {
             recordingList.push_back(new RecordingInfo(**it));
         }
-        else if (bShowAll && ((*it)->GetRecordingStartTime() >=
-             QDateTime::currentDateTime()))
+        else if (bShowAll &&
+                 ((*it)->GetRecordingStartTime() >= MythDate::current()))
         {
             recordingList.push_back(new RecordingInfo(**it));
         }
@@ -359,7 +359,7 @@ DTC::ProgramList* Dvr::GetUpcomingList( int  nStartIndex,
     pPrograms->setStartIndex    ( nStartIndex     );
     pPrograms->setCount         ( nCount          );
     pPrograms->setTotalAvailable( recordingList.size() );
-    pPrograms->setAsOf          ( QDateTime::currentDateTime() );
+    pPrograms->setAsOf          ( MythDate::current() );
     pPrograms->setVersion       ( MYTH_BINARY_VERSION );
     pPrograms->setProtoVer      ( MYTH_PROTO_VERSION  );
     
@@ -383,8 +383,7 @@ DTC::ProgramList* Dvr::GetConflictList( int  nStartIndex,
     for(; it < tmpList.end(); ++it)
     {
         if (((*it)->GetRecordingStatus() == rsConflict) &&
-            ((*it)->GetRecordingStartTime() >=
-             QDateTime::currentDateTime()))
+            ((*it)->GetRecordingStartTime() >= MythDate::current()))
         {
             recordingList.push_back(new RecordingInfo(**it));
         }
@@ -414,7 +413,7 @@ DTC::ProgramList* Dvr::GetConflictList( int  nStartIndex,
     pPrograms->setStartIndex    ( nStartIndex     );
     pPrograms->setCount         ( nCount          );
     pPrograms->setTotalAvailable( recordingList.size() );
-    pPrograms->setAsOf          ( QDateTime::currentDateTime() );
+    pPrograms->setAsOf          ( MythDate::current() );
     pPrograms->setVersion       ( MYTH_BINARY_VERSION );
     pPrograms->setProtoVer      ( MYTH_PROTO_VERSION  );
 
@@ -578,7 +577,7 @@ DTC::RecRuleList* Dvr::GetRecordScheduleList( int nStartIndex,
     pRecRules->setStartIndex    ( nStartIndex     );
     pRecRules->setCount         ( nCount          );
     pRecRules->setTotalAvailable( recList.size() );
-    pRecRules->setAsOf          ( QDateTime::currentDateTime() );
+    pRecRules->setAsOf          ( MythDate::current() );
     pRecRules->setVersion       ( MYTH_BINARY_VERSION );
     pRecRules->setProtoVer      ( MYTH_PROTO_VERSION  );
 
diff --git a/mythtv/programs/mythbackend/services/myth.cpp b/mythtv/programs/mythbackend/services/myth.cpp
index b96d258..a0f449f 100644
--- a/mythtv/programs/mythbackend/services/myth.cpp
+++ b/mythtv/programs/mythbackend/services/myth.cpp
@@ -496,7 +496,7 @@ DTC::LogMessageList *Myth::GetLogs(  const QString   &HostName,
             pLogMessage->setFilename( query.value(5).toString() );
             pLogMessage->setLine( query.value(6).toInt() );
             pLogMessage->setFunction( query.value(7).toString() );
-            pLogMessage->setTime( query.value(8).toDateTime() );
+            pLogMessage->setTime(MythDate::as_utc(query.value(8).toDateTime()));
             pLogMessage->setLevel( logLevelGetName(
                                        (LogLevel_t)query.value(9).toInt()) );
             pLogMessage->setMessage( query.value(10).toString() );
diff --git a/mythtv/programs/mythbackend/upnpcdstv.cpp b/mythtv/programs/mythbackend/upnpcdstv.cpp
index c0b8ff4..daae4b5 100644
--- a/mythtv/programs/mythbackend/upnpcdstv.cpp
+++ b/mythtv/programs/mythbackend/upnpcdstv.cpp
@@ -285,8 +285,8 @@ void UPnpCDSTv::AddItem( const UPnpCDSRequest    *pRequest,
                          MSqlQuery               &query )
 {
     int            nChanid      = query.value( 0).toInt();
-    QDateTime      dtStartTime  = query.value( 1).toDateTime();
-    QDateTime      dtEndTime    = query.value( 2).toDateTime();
+    QDateTime      dtStartTime  = MythDate::as_utc(query.value(1).toDateTime());
+    QDateTime      dtEndTime    = MythDate::as_utc(query.value(2).toDateTime());
     QString        sTitle       = query.value( 3).toString();
     QString        sSubtitle    = query.value( 4).toString();
     QString        sDescription = query.value( 5).toString();
@@ -296,8 +296,8 @@ void UPnpCDSTv::AddItem( const UPnpCDSRequest    *pRequest,
     uint64_t       nFileSize    = query.value( 9).toULongLong();
     QString        sBaseName    = query.value(10).toString();
 
-    QDateTime      dtProgStart  = query.value(11).toDateTime();
-    QDateTime      dtProgEnd    = query.value(12).toDateTime();
+    QDateTime      dtProgStart  =MythDate::as_utc(query.value(11).toDateTime());
+    QDateTime      dtProgEnd    =MythDate::as_utc(query.value(12).toDateTime());
     QString        sStorageGrp  = query.value(13).toString();
 
     // ----------------------------------------------------------------------
diff --git a/mythtv/programs/mythbackend/upnpcdsvideo.cpp b/mythtv/programs/mythbackend/upnpcdsvideo.cpp
index 99872fb..d328168 100644
--- a/mythtv/programs/mythbackend/upnpcdsvideo.cpp
+++ b/mythtv/programs/mythbackend/upnpcdsvideo.cpp
@@ -252,7 +252,7 @@ void UPnpCDSVideo::AddItem( const UPnpCDSRequest    *pRequest,
     // int             nSeason      = query.value(10).toInt();
     // int             nEpisode     = query.value(11).toInt();
     QString        sCoverArt    = query.value(12).toString();
-    QDateTime      dtInsertDate = query.value(13).toDateTime();
+    QDateTime      dtInsertDate =MythDate::as_utc(query.value(13).toDateTime());
     QString        sHostName    = query.value(14).toString();
 
     // ----------------------------------------------------------------------
