From 71591e82191ce5d9a339fb6e1a5a0a402a2eff7d Mon Sep 17 00:00:00 2001 From: Davide Pesavento Date: Sat, 26 Jul 2025 20:24:24 -0400 Subject: [PATCH] Qt: Use localized date/time formatting in a few more places --- src/core/game_database.h | 2 +- src/duckstation-qt/achievementsettingswidget.cpp | 5 +++-- src/duckstation-qt/gamesummarywidget.cpp | 7 +++++-- src/duckstation-qt/qthost.cpp | 2 +- src/duckstation-qt/setupwizarddialog.cpp | 5 +++-- 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/core/game_database.h b/src/core/game_database.h index 320f35c09..3575d648b 100644 --- a/src/core/game_database.h +++ b/src/core/game_database.h @@ -107,7 +107,7 @@ struct Entry std::string_view publisher; std::string_view compatibility_version_tested; std::string_view compatibility_comments; - u64 release_date; + u64 release_date; ///< Number of seconds since Epoch. u8 min_players; u8 max_players; u8 min_blocks; diff --git a/src/duckstation-qt/achievementsettingswidget.cpp b/src/duckstation-qt/achievementsettingswidget.cpp index e8097b759..957132e67 100644 --- a/src/duckstation-qt/achievementsettingswidget.cpp +++ b/src/duckstation-qt/achievementsettingswidget.cpp @@ -199,10 +199,11 @@ void AchievementSettingsWidget::updateLoginState() { const u64 login_unix_timestamp = StringUtil::FromChars(Host::GetBaseStringSettingValue("Cheevos", "LoginTimestamp", "0")).value_or(0); - const QDateTime login_timestamp(QDateTime::fromSecsSinceEpoch(static_cast(login_unix_timestamp))); + const QString login_timestamp = QtHost::FormatNumber(Host::NumberFormatType::ShortDateTime, + static_cast(login_unix_timestamp)); m_ui.loginStatus->setText(tr("Username: %1\nLogin token generated on %2.") .arg(QString::fromStdString(username)) - .arg(login_timestamp.toString(Qt::TextDate))); + .arg(login_timestamp)); m_ui.loginButton->setText(tr("Logout")); } else diff --git a/src/duckstation-qt/gamesummarywidget.cpp b/src/duckstation-qt/gamesummarywidget.cpp index 481d18ff2..68f22a5bc 100644 --- a/src/duckstation-qt/gamesummarywidget.cpp +++ b/src/duckstation-qt/gamesummarywidget.cpp @@ -161,8 +161,11 @@ void GameSummaryWidget::populateUi(const std::string& path, const std::string& s QString release_info; if (entry->release_date != 0) - release_info = - tr("Released %1").arg(QDateTime::fromSecsSinceEpoch(entry->release_date, QTimeZone::utc()).date().toString()); + { + const QString date = QDateTime::fromSecsSinceEpoch(static_cast(entry->release_date), QTimeZone::utc()) + .toString(QtHost::GetApplicationLocale().dateFormat()); + release_info = tr("Released %1").arg(date); + } if (entry->min_players != 0) { if (!release_info.isEmpty()) diff --git a/src/duckstation-qt/qthost.cpp b/src/duckstation-qt/qthost.cpp index 8f64c0eca..da96d306e 100644 --- a/src/duckstation-qt/qthost.cpp +++ b/src/duckstation-qt/qthost.cpp @@ -2217,7 +2217,7 @@ QString QtHost::FormatNumber(Host::NumberFormatType type, s64 value) } break; - DefaultCaseIsUnreachable(); + DefaultCaseIsUnreachable(); } ret = QDateTime::fromSecsSinceEpoch(value, QTimeZone::utc()).toLocalTime().toString(format); diff --git a/src/duckstation-qt/setupwizarddialog.cpp b/src/duckstation-qt/setupwizarddialog.cpp index c25efd0c8..e7bdefddc 100644 --- a/src/duckstation-qt/setupwizarddialog.cpp +++ b/src/duckstation-qt/setupwizarddialog.cpp @@ -672,10 +672,11 @@ void SetupWizardDialog::updateAchievementsLoginState() { const u64 login_unix_timestamp = StringUtil::FromChars(Host::GetBaseStringSettingValue("Cheevos", "LoginTimestamp", "0")).value_or(0); - const QDateTime login_timestamp(QDateTime::fromSecsSinceEpoch(static_cast(login_unix_timestamp))); + const QString login_timestamp = QtHost::FormatNumber(Host::NumberFormatType::ShortDateTime, + static_cast(login_unix_timestamp)); m_ui.loginStatus->setText(tr("Username: %1\nLogin token generated on %2.") .arg(QString::fromStdString(username)) - .arg(login_timestamp.toString(Qt::TextDate))); + .arg(login_timestamp)); m_ui.loginButton->setText(tr("Logout")); } else