update deprecated time feature

update from timespec to timezone
This commit is contained in:
2025-04-05 13:34:44 +02:00
parent 6ec4ad486b
commit 254e7cd03e
6 changed files with 55 additions and 46 deletions

View File

@@ -132,7 +132,7 @@ static inline void qwtFloorTime(
const Qt::TimeSpec timeSpec = dt.timeSpec(); const Qt::TimeSpec timeSpec = dt.timeSpec();
if ( timeSpec == Qt::LocalTime ) if ( timeSpec == Qt::LocalTime )
dt = dt.toTimeSpec( Qt::UTC ); dt = dt.toTimeZone(QTimeZone::UTC);
const QTime t = dt.time(); const QTime t = dt.time();
switch( intervalType ) switch( intervalType )
@@ -157,13 +157,13 @@ static inline void qwtFloorTime(
} }
if ( timeSpec == Qt::LocalTime ) if ( timeSpec == Qt::LocalTime )
dt = dt.toTimeSpec( Qt::LocalTime ); dt = dt.toTimeZone( QTimeZone::LocalTime );
} }
static inline QDateTime qwtToTimeSpec( static inline QDateTime qwtToTimeSpec(
const QDateTime& dt, Qt::TimeSpec spec ) const QDateTime& dt, QTimeZone spec )
{ {
if ( dt.timeSpec() == spec ) if ( dt.timeZone() == spec )
return dt; return dt;
const qint64 jd = dt.date().toJulianDay(); const qint64 jd = dt.date().toJulianDay();
@@ -175,11 +175,12 @@ static inline QDateTime qwtToTimeSpec(
// for those dates // for those dates
QDateTime dt2 = dt; QDateTime dt2 = dt;
dt2.setTimeSpec( spec ); dt2.setTimeZone( spec );
return dt2; return dt2;
} }
QDateTime dt_copy = dt;
return dt.toTimeSpec( spec ); dt_copy.setTimeZone( spec );
return dt_copy;
} }
#if 0 #if 0
@@ -258,7 +259,7 @@ static inline QDate qwtToDate( int year, int month = 1, int day = 1 )
\sa toDouble(), QDateTime::setMSecsSinceEpoch() \sa toDouble(), QDateTime::setMSecsSinceEpoch()
\note The return datetime for Qt::OffsetFromUTC will be Qt::UTC \note The return datetime for Qt::OffsetFromUTC will be Qt::UTC
*/ */
QDateTime QwtDate::toDateTime( double value, Qt::TimeSpec timeSpec ) QDateTime QwtDate::toDateTime( double value, QTimeZone timeSpec )
{ {
const int msecsPerDay = 86400000; const int msecsPerDay = 86400000;
@@ -277,9 +278,9 @@ QDateTime QwtDate::toDateTime( double value, Qt::TimeSpec timeSpec )
static const QTime timeNull( 0, 0, 0, 0 ); static const QTime timeNull( 0, 0, 0, 0 );
QDateTime dt( d, timeNull.addMSecs( msecs ), Qt::UTC ); QDateTime dt( d, timeNull.addMSecs( msecs ), QTimeZone::UTC );
if ( timeSpec == Qt::LocalTime ) if ( timeSpec == QTimeZone::LocalTime )
dt = qwtToTimeSpec( dt, timeSpec ); dt = qwtToTimeSpec( dt, timeSpec );
return dt; return dt;
@@ -299,7 +300,7 @@ double QwtDate::toDouble( const QDateTime& dateTime )
{ {
const int msecsPerDay = 86400000; const int msecsPerDay = 86400000;
const QDateTime dt = qwtToTimeSpec( dateTime, Qt::UTC ); const QDateTime dt = qwtToTimeSpec( dateTime, QTimeZone::UTC );
const double days = dt.date().toJulianDay() - QwtDate::JulianDayForEpoch; const double days = dt.date().toJulianDay() - QwtDate::JulianDayForEpoch;
@@ -653,7 +654,7 @@ int QwtDate::utcOffset( const QDateTime& dateTime )
} }
default: default:
{ {
const QDateTime dt1( dateTime.date(), dateTime.time(), Qt::UTC ); const QDateTime dt1( dateTime.date(), dateTime.time(), QTimeZone::UTC );
seconds = dateTime.secsTo( dt1 ); seconds = dateTime.secsTo( dt1 );
} }
} }

View File

@@ -12,6 +12,7 @@
#include "qwt_global.h" #include "qwt_global.h"
#include <qdatetime.h> #include <qdatetime.h>
#include <qtimezone.h>
/*! /*!
\brief A collection of methods around date/time values \brief A collection of methods around date/time values
@@ -109,7 +110,7 @@ class QWT_EXPORT QwtDate
static QDate maxDate(); static QDate maxDate();
static QDateTime toDateTime( double value, static QDateTime toDateTime( double value,
Qt::TimeSpec = Qt::UTC ); QTimeZone = QTimeZone::UTC );
static double toDouble( const QDateTime& ); static double toDouble( const QDateTime& );

View File

@@ -13,8 +13,8 @@
class QwtDateScaleDraw::PrivateData class QwtDateScaleDraw::PrivateData
{ {
public: public:
explicit PrivateData( Qt::TimeSpec spec ) explicit PrivateData( QTimeZone zone )
: timeSpec( spec ) : timeZone( zone )
, utcOffset( 0 ) , utcOffset( 0 )
, week0Type( QwtDate::FirstThursday ) , week0Type( QwtDate::FirstThursday )
{ {
@@ -28,7 +28,7 @@ class QwtDateScaleDraw::PrivateData
dateFormats[ QwtDate::Year ] = "yyyy"; dateFormats[ QwtDate::Year ] = "yyyy";
} }
Qt::TimeSpec timeSpec; QTimeZone timeZone;
int utcOffset; int utcOffset;
QwtDate::Week0Type week0Type; QwtDate::Week0Type week0Type;
QString dateFormats[ QwtDate::Year + 1 ]; QString dateFormats[ QwtDate::Year + 1 ];
@@ -45,9 +45,9 @@ class QwtDateScaleDraw::PrivateData
\sa setTimeSpec(), setWeek0Type() \sa setTimeSpec(), setWeek0Type()
*/ */
QwtDateScaleDraw::QwtDateScaleDraw( Qt::TimeSpec timeSpec ) QwtDateScaleDraw::QwtDateScaleDraw( QTimeZone timeZone )
{ {
m_data = new PrivateData( timeSpec ); m_data = new PrivateData( timeZone );
} }
//! Destructor //! Destructor
@@ -62,18 +62,18 @@ QwtDateScaleDraw::~QwtDateScaleDraw()
\param timeSpec Time specification \param timeSpec Time specification
\sa timeSpec(), setUtcOffset(), toDateTime() \sa timeSpec(), setUtcOffset(), toDateTime()
*/ */
void QwtDateScaleDraw::setTimeSpec( Qt::TimeSpec timeSpec ) void QwtDateScaleDraw::setTimeZone( QTimeZone timeZone )
{ {
m_data->timeSpec = timeSpec; m_data->timeZone = timeZone;
} }
/*! /*!
\return Time specification used for the tick labels \return Time specification used for the tick labels
\sa setTimeSpec(), utcOffset(), toDateTime() \sa setTimeSpec(), utcOffset(), toDateTime()
*/ */
Qt::TimeSpec QwtDateScaleDraw::timeSpec() const QTimeZone QwtDateScaleDraw::timeZone() const
{ {
return m_data->timeSpec; return m_data->timeZone;
} }
/*! /*!
@@ -268,11 +268,13 @@ QwtDate::IntervalType QwtDateScaleDraw::intervalType(
*/ */
QDateTime QwtDateScaleDraw::toDateTime( double value ) const QDateTime QwtDateScaleDraw::toDateTime( double value ) const
{ {
QDateTime dt = QwtDate::toDateTime( value, m_data->timeSpec ); QDateTime dt = QwtDate::toDateTime( value, m_data->timeZone );
if ( m_data->timeSpec == Qt::OffsetFromUTC ) if ( m_data->timeZone == QTimeZone::LocalTime )
{ {
dt = dt.addSecs( m_data->utcOffset ); dt = dt.addSecs( m_data->utcOffset );
#if QT_VERSION >= 0x050200 #if QT_VERSION >= 0x060000
dt.setTimeZone( QTimeZone(m_data->utcOffset) );
#elif QT_VERSION >= 0x050200
dt.setOffsetFromUtc( m_data->utcOffset ); dt.setOffsetFromUtc( m_data->utcOffset );
#else #else
dt.setUtcOffset( m_data->utcOffset ); dt.setUtcOffset( m_data->utcOffset );

View File

@@ -52,14 +52,14 @@
class QWT_EXPORT QwtDateScaleDraw : public QwtScaleDraw class QWT_EXPORT QwtDateScaleDraw : public QwtScaleDraw
{ {
public: public:
explicit QwtDateScaleDraw( Qt::TimeSpec = Qt::LocalTime ); explicit QwtDateScaleDraw( QTimeZone timeZone = QTimeZone::LocalTime );
virtual ~QwtDateScaleDraw(); virtual ~QwtDateScaleDraw();
void setDateFormat( QwtDate::IntervalType, const QString& ); void setDateFormat( QwtDate::IntervalType, const QString& );
QString dateFormat( QwtDate::IntervalType ) const; QString dateFormat( QwtDate::IntervalType ) const;
void setTimeSpec( Qt::TimeSpec ); void setTimeZone( QTimeZone );
Qt::TimeSpec timeSpec() const; QTimeZone timeZone() const;
void setUtcOffset( int seconds ); void setUtcOffset( int seconds );
int utcOffset() const; int utcOffset() const;

View File

@@ -717,15 +717,15 @@ static QwtScaleDiv qwtDivideToYears(
class QwtDateScaleEngine::PrivateData class QwtDateScaleEngine::PrivateData
{ {
public: public:
explicit PrivateData( Qt::TimeSpec spec ) explicit PrivateData( QTimeZone zone )
: timeSpec( spec ) : timeZone( zone )
, utcOffset( 0 ) , utcOffset( 0 )
, week0Type( QwtDate::FirstThursday ) , week0Type( QwtDate::FirstThursday )
, maxWeeks( 4 ) , maxWeeks( 4 )
{ {
} }
Qt::TimeSpec timeSpec; QTimeZone timeZone;
int utcOffset; int utcOffset;
QwtDate::Week0Type week0Type; QwtDate::Week0Type week0Type;
int maxWeeks; int maxWeeks;
@@ -744,10 +744,10 @@ class QwtDateScaleEngine::PrivateData
\sa setTimeSpec(), setMaxWeeks(), setWeek0Type() \sa setTimeSpec(), setMaxWeeks(), setWeek0Type()
*/ */
QwtDateScaleEngine::QwtDateScaleEngine( Qt::TimeSpec timeSpec ) QwtDateScaleEngine::QwtDateScaleEngine( QTimeZone timeZone )
: QwtLinearScaleEngine( 10 ) : QwtLinearScaleEngine( 10 )
{ {
m_data = new PrivateData( timeSpec ); m_data = new PrivateData( timeZone );
} }
//! Destructor //! Destructor
@@ -762,18 +762,18 @@ QwtDateScaleEngine::~QwtDateScaleEngine()
\param timeSpec Time specification \param timeSpec Time specification
\sa timeSpec(), setUtcOffset(), toDateTime() \sa timeSpec(), setUtcOffset(), toDateTime()
*/ */
void QwtDateScaleEngine::setTimeSpec( Qt::TimeSpec timeSpec ) void QwtDateScaleEngine::setTimeZone( QTimeZone timeZone )
{ {
m_data->timeSpec = timeSpec; m_data->timeZone = timeZone;
} }
/*! /*!
\return Time specification used by the engine \return Time specification used by the engine
\sa setTimeSpec(), utcOffset(), toDateTime() \sa setTimeSpec(), utcOffset(), toDateTime()
*/ */
Qt::TimeSpec QwtDateScaleEngine::timeSpec() const QTimeZone QwtDateScaleEngine::timeZone() const
{ {
return m_data->timeSpec; return m_data->timeZone;
} }
/*! /*!
@@ -1116,7 +1116,7 @@ QDateTime QwtDateScaleEngine::alignDate(
if ( dateTime.timeSpec() == Qt::OffsetFromUTC ) if ( dateTime.timeSpec() == Qt::OffsetFromUTC )
{ {
#if QT_VERSION >= 0x050200 #if QT_VERSION >= 0x050200
dt.setOffsetFromUtc( 0 ); dt.setTimeZone( QTimeZone::UTC );
#else #else
dt.setUtcOffset( 0 ); dt.setUtcOffset( 0 );
#endif #endif
@@ -1277,7 +1277,9 @@ QDateTime QwtDateScaleEngine::alignDate(
if ( dateTime.timeSpec() == Qt::OffsetFromUTC ) if ( dateTime.timeSpec() == Qt::OffsetFromUTC )
{ {
#if QT_VERSION >= 0x050200 #if QT_VERSION >= 0x060000
dt.setTimeZone( QTimeZone(dateTime.offsetFromUtc()) );
#elif QT_VERSION >= 0x050200
dt.setOffsetFromUtc( dateTime.offsetFromUtc() ); dt.setOffsetFromUtc( dateTime.offsetFromUtc() );
#else #else
dt.setUtcOffset( dateTime.utcOffset() ); dt.setUtcOffset( dateTime.utcOffset() );
@@ -1297,19 +1299,22 @@ QDateTime QwtDateScaleEngine::alignDate(
*/ */
QDateTime QwtDateScaleEngine::toDateTime( double value ) const QDateTime QwtDateScaleEngine::toDateTime( double value ) const
{ {
QDateTime dt = QwtDate::toDateTime( value, m_data->timeSpec ); QDateTime dt = QwtDate::toDateTime( value, m_data->timeZone );
if ( !dt.isValid() ) if ( !dt.isValid() )
{ {
const QDate date = ( value <= 0.0 ) const QDate date = ( value <= 0.0 )
? QwtDate::minDate() : QwtDate::maxDate(); ? QwtDate::minDate() : QwtDate::maxDate();
dt = QDateTime( date, QTime( 0, 0 ), m_data->timeSpec ); dt = QDateTime( date, QTime( 0, 0 ), m_data->timeZone );
} }
if ( m_data->timeSpec == Qt::OffsetFromUTC ) if ( m_data->timeZone == QTimeZone::LocalTime )
{ {
dt = dt.addSecs( m_data->utcOffset ); dt = dt.addSecs( m_data->utcOffset );
#if QT_VERSION >= 0x050200
#if QT_VERSION >= 0x060000
dt.setTimeZone( QTimeZone(m_data->utcOffset) );
#elif QT_VERSION >= 0x050200
dt.setOffsetFromUtc( m_data->utcOffset ); dt.setOffsetFromUtc( m_data->utcOffset );
#else #else
dt.setUtcOffset( m_data->utcOffset ); dt.setUtcOffset( m_data->utcOffset );

View File

@@ -42,11 +42,11 @@
class QWT_EXPORT QwtDateScaleEngine : public QwtLinearScaleEngine class QWT_EXPORT QwtDateScaleEngine : public QwtLinearScaleEngine
{ {
public: public:
explicit QwtDateScaleEngine( Qt::TimeSpec = Qt::LocalTime ); explicit QwtDateScaleEngine( QTimeZone = QTimeZone::LocalTime );
virtual ~QwtDateScaleEngine(); virtual ~QwtDateScaleEngine();
void setTimeSpec( Qt::TimeSpec ); void setTimeZone( QTimeZone );
Qt::TimeSpec timeSpec() const; QTimeZone timeZone() const;
void setUtcOffset( int seconds ); void setUtcOffset( int seconds );
int utcOffset() const; int utcOffset() const;