QDateTime date = QDateTime::currentDateTime();
QString week = QDate::shortDayName(date.date().dayOfWeek());

painter.drawText(-30, 20, 65, 40, Qt::AlignHCenter, week);

我正在Qt Creator中绘制时钟。我的Qt版本是5.8.0。我系统的语言是中文,所以星期以中文显示。关于语言环境吗?如何用英语显示一周?

最佳答案

QLocale对象可以使用接受QLocale::toString()QDateQDateTime方法格式化日期和时间。

演示:

#include <QDate>
#include <QDebug>
#include <QLocale>

int main()
{
    const QDate date{ 2017, 5, 5 };
    const QLocale locales[]{ QLocale::English, QLocale::Chinese, QLocale::Finnish };

    for (auto const& l: locales)
        qDebug() << qPrintable(QString("In %0: %1 is %2")
            .arg(l.nativeLanguageName(),
                 l.toString(date, QLocale::ShortFormat),
                 l.toString(date, "dddd")));
}

输出量



简短答案

你可以写
QString week = QLocale{QLocale::English}.toString(date, "dddd");

(尽管我不会将其称为week-这使我期望一年内的星期数)。

07-24 14:37