如何从不同语言的 QDatetime 获取日期名称?
How can I obtain day name from QDatetime in a different language?
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 的吗?如何用英语显示星期?
是的,如果您需要根据其他语言环境(不是默认语言环境)生成字符串,则需要使用语言环境对象指定它。尝试这样的事情:
QLocale locale(QLocale("en_US"));
QDateTime date = QDateTime::currentDateTime();
QString dateString = locale.toString(date);
如果您只需要完整日期的一部分(星期几或类似日期),您可以设置格式:
QString dateString = locale.toString(date, "dddd, d MMMM yyyy");
QLocale
对象可以使用接受 QDate
或 QDateTime
.
的 QLocale::toString()
方法格式化日期和时间
演示:
#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")));
}
输出
In American English: 5/5/17 is Friday
In 简体中文: 2017/5/5 is 星期五
In suomi: 5.5.2017 is perjantaina
简答
你可以写
QString week = QLocale{QLocale::English}.toString(date, "dddd");
(虽然我不会称它为 week
- 这让我期待一年中的周数)。
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 的吗?如何用英语显示星期?
是的,如果您需要根据其他语言环境(不是默认语言环境)生成字符串,则需要使用语言环境对象指定它。尝试这样的事情:
QLocale locale(QLocale("en_US"));
QDateTime date = QDateTime::currentDateTime();
QString dateString = locale.toString(date);
如果您只需要完整日期的一部分(星期几或类似日期),您可以设置格式:
QString dateString = locale.toString(date, "dddd, d MMMM yyyy");
QLocale
对象可以使用接受 QDate
或 QDateTime
.
QLocale::toString()
方法格式化日期和时间
演示:
#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")));
}
输出
In American English: 5/5/17 is Friday
In 简体中文: 2017/5/5 is 星期五
In suomi: 5.5.2017 is perjantaina
简答
你可以写
QString week = QLocale{QLocale::English}.toString(date, "dddd");
(虽然我不会称它为 week
- 这让我期待一年中的周数)。