File indexing completed on 2024-04-28 15:40:25
0001 // SPDX-FileCopyrightText: 2020 the KPhotoAlbum Development Team 0002 // SPDX-FileCopyrightText: 2022 - 2023 Johannes Zarl-Zierl <johannes@zarl-zierl.at> 0003 // 0004 // SPDX-License-Identifier: GPL-2.0-or-later 0005 0006 #include "FastDateTime.h" 0007 0008 namespace 0009 { 0010 static inline qint64 toValidatedMSecs(const QDateTime &dateTime) 0011 { 0012 return dateTime.isValid() ? dateTime.toMSecsSinceEpoch() : INT64_MIN; 0013 } 0014 } 0015 0016 Utilities::FastDateTime::FastDateTime() 0017 : m_dateTime() 0018 , m_msecsSinceEpoch(toValidatedMSecs(m_dateTime)) 0019 { 0020 } 0021 0022 Utilities::FastDateTime::FastDateTime(const QDate &d, const QTime &t, 0023 Qt::TimeSpec spec) 0024 : m_dateTime(d, t, spec) 0025 , m_msecsSinceEpoch(toValidatedMSecs(m_dateTime)) 0026 { 0027 } 0028 0029 Utilities::FastDateTime::FastDateTime(const QDate &d) 0030 : m_dateTime(d.startOfDay()) 0031 , m_msecsSinceEpoch(toValidatedMSecs(m_dateTime)) 0032 { 0033 } 0034 0035 Utilities::FastDateTime::FastDateTime(const QDateTime &other) 0036 : m_dateTime(other) 0037 , m_msecsSinceEpoch(toValidatedMSecs(m_dateTime)) 0038 { 0039 } 0040 0041 Utilities::FastDateTime 0042 Utilities::FastDateTime::addDays(qint64 days) const 0043 { 0044 FastDateTime answer(*this); 0045 answer.m_dateTime = answer.m_dateTime.addDays(days); 0046 answer.m_msecsSinceEpoch = toValidatedMSecs(answer.m_dateTime); 0047 return answer; 0048 } 0049 0050 Utilities::FastDateTime 0051 Utilities::FastDateTime::addMonths(qint64 months) const 0052 { 0053 FastDateTime answer(*this); 0054 answer.m_dateTime = answer.m_dateTime.addMonths(months); 0055 answer.m_msecsSinceEpoch = toValidatedMSecs(answer.m_dateTime); 0056 return answer; 0057 } 0058 0059 Utilities::FastDateTime 0060 Utilities::FastDateTime::addYears(qint64 years) const 0061 { 0062 FastDateTime answer(*this); 0063 answer.m_dateTime = answer.m_dateTime.addYears(years); 0064 answer.m_msecsSinceEpoch = toValidatedMSecs(answer.m_dateTime); 0065 return answer; 0066 } 0067 0068 Utilities::FastDateTime 0069 Utilities::FastDateTime::addSecs(qint64 secs) const 0070 { 0071 FastDateTime answer(*this); 0072 answer.m_dateTime = answer.m_dateTime.addSecs(secs); 0073 answer.m_msecsSinceEpoch = toValidatedMSecs(answer.m_dateTime); 0074 return answer; 0075 } 0076 0077 Utilities::FastDateTime 0078 Utilities::FastDateTime::currentDateTime() 0079 { 0080 QDateTime answer(QDateTime::currentDateTime()); 0081 return FastDateTime(answer); 0082 } 0083 0084 Utilities::FastDateTime 0085 Utilities::FastDateTime::fromString(const QString &s, Qt::DateFormat f) 0086 { 0087 QDateTime answer(QDateTime::fromString(s, f)); 0088 return FastDateTime(answer); 0089 } 0090 0091 QDebug operator<<(QDebug debug, const Utilities::FastDateTime &d) 0092 { 0093 QDebugStateSaver saveState(debug); 0094 if (d.isNull()) { 0095 debug.nospace() << "Utilities::FastDateTime()"; 0096 } else { 0097 debug.nospace() << "Utilities::FastDateTime(" << d.toString(Qt::ISODate) << ")"; 0098 } 0099 return debug; 0100 }