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。我的系统的语言是中文,所以本周用中文显示。这是关于Locale的吗?如何用英语显示本周?
答案 0 :(得分:4)
是的,如果需要根据其他语言环境(而不是默认语言环境)生成字符串,则需要使用语言环境对象指定它。尝试这样的事情:
QLocale locale(QLocale("en_US"));
QDateTime date = QDateTime::currentDateTime();
QString dateString = locale.toString(date);
如果您只需要完整日期的一部分(一周中的某一天或类似的事情),您可以设置格式:
QString dateString = locale.toString(date, "dddd, d MMMM yyyy");
答案 1 :(得分:2)
QLocale
对象可以使用接受QLocale::toString()
或QDate
的{{1}}方法格式化日期和时间。
QDateTime
在美式英语中:5/5/17是星期五 在简体中文:2017/5/5是星期五
在suomi:5.5.2017是perjantaina
你可以写
#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");
- 这让我期待一年中的周数。)