Man*_*ooo 3 c++ qt locale datetime-format
QDateTime date = QDateTime::currentDateTime();
QString week = QDate::shortDayName(date.date().dayOfWeek());
painter.drawText(-30, 20, 65, 40, Qt::AlignHCenter, week);
Run Code Online (Sandbox Code Playgroud)
我正在 Qt Creator 中绘制时钟。我的 Qt 版本是 5.8.0。我的系统语言是中文,所以星期是中文显示的。是关于 Locale 的吗?如何用英文显示星期?
是的,如果您需要基于另一个语言环境(不是默认语言环境)生成字符串,则需要使用语言环境对象指定它。尝试这样的事情:
QLocale locale(QLocale("en_US"));
QDateTime date = QDateTime::currentDateTime();
QString dateString = locale.toString(date);
Run Code Online (Sandbox Code Playgroud)
如果您只需要完整日期的一部分(一周中的某天或类似日期),您可以设置格式:
QString dateString = locale.toString(date, "dddd, d MMMM yyyy");
Run Code Online (Sandbox Code Playgroud)
对象QLocale
可以使用QLocale::toString()
接受QDate
或 的方法来格式化日期和时间QDateTime
。
#include <QDate>\n#include <QDebug>\n#include <QLocale>\n\nint main()\n{\n const QDate date{ 2017, 5, 5 };\n const QLocale locales[]{ QLocale::English, QLocale::Chinese, QLocale::Finnish };\n\n for (auto const& l: locales)\n qDebug() << qPrintable(QString("In %0: %1 is %2")\n .arg(l.nativeLanguageName(),\n l.toString(date, QLocale::ShortFormat),\n l.toString(date, "dddd")));\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n\n\n\n在美式英语中: 5/5/17 是星期五
\n
\n 在 \xe7\xae\x80\xe4\xbd\x93\xe4\xb8\xad\xe6\x96\x87 中: 2017/5/5 是 \xe6\x98\ x9f\xe6\x9c\x9f\xe4\xba\x94
\n 在 suomi 中:5.5.2017 是 perjantaina
你可以写
\n\nQString week = QLocale{QLocale::English}.toString(date, "dddd");\n
Run Code Online (Sandbox Code Playgroud)\n\n(虽然我不会这么称呼它week
- 这让我期待一年内的周数)。