以本地化格式显示月份和日期
Display month and day in localized format
我需要为各种区域设置正确的月和日格式。
我有 QLable 和 QDate,标签必须显示月份和日期。我尝试按 QLocale.
格式化日期
//Yes, I got system locale and set is as default
QLocale::toString(date, "MMMM d");
但是结果不正确。
例如,"MMMM d" 在德语语言环境中等于:
"d. MMMM"
法语是:
"d MMMM"
如何将 "MMMM d" 格式转换为 Qt 4.8 中的语言环境设置?
谢谢!
P.S。在 javascript 我使用下面的代码
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
var options = {month: 'long', day: 'numeric' };
console.log(date.toLocaleDateString('de-DE', options));
一种方法是解析 QLocale::LongFormat
:
#include <QtGui>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QList<QLocale> locales;
locales << QLocale(QLocale::English);
locales << QLocale(QLocale::German);
locales << QLocale(QLocale::French);
locales << QLocale(QLocale::Russian);
locales << QLocale(QLocale::Chinese);
locales << QLocale(QLocale::Korean);
foreach(QLocale locale, locales) {
QString format = locale.dateFormat(QLocale::LongFormat);
QRegExp rx("([^d]d(?!d)[^,;]?\s?|M+.?){2}");
rx.indexIn(format);
QString localed = rx.cap(0).trimmed();
qDebug() << locale.bcp47Name() << "\t" << localed << "\t" << locale.toString(QDateTime::currentDateTime(), localed);
}
return app.exec();
}
输出:
"en-US" "MMMM d" "March 17"
"de-DE" "d. MMMM" "17. März"
"fr-FR" "d MMMM" "17 mars"
"ru-RU" "d MMMM" "17 марта"
"zh-CN" "M月d日" "3月17日"
"ko-KR" "M월 d일" "3월 17일"
所以,我使用了 ICU 库。 DateTimePatternGenerator解决我的问题
我需要为各种区域设置正确的月和日格式。 我有 QLable 和 QDate,标签必须显示月份和日期。我尝试按 QLocale.
格式化日期//Yes, I got system locale and set is as default
QLocale::toString(date, "MMMM d");
但是结果不正确。
例如,"MMMM d" 在德语语言环境中等于:
"d. MMMM"
法语是:
"d MMMM"
如何将 "MMMM d" 格式转换为 Qt 4.8 中的语言环境设置?
谢谢!
P.S。在 javascript 我使用下面的代码
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
var options = {month: 'long', day: 'numeric' };
console.log(date.toLocaleDateString('de-DE', options));
一种方法是解析 QLocale::LongFormat
:
#include <QtGui>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QList<QLocale> locales;
locales << QLocale(QLocale::English);
locales << QLocale(QLocale::German);
locales << QLocale(QLocale::French);
locales << QLocale(QLocale::Russian);
locales << QLocale(QLocale::Chinese);
locales << QLocale(QLocale::Korean);
foreach(QLocale locale, locales) {
QString format = locale.dateFormat(QLocale::LongFormat);
QRegExp rx("([^d]d(?!d)[^,;]?\s?|M+.?){2}");
rx.indexIn(format);
QString localed = rx.cap(0).trimmed();
qDebug() << locale.bcp47Name() << "\t" << localed << "\t" << locale.toString(QDateTime::currentDateTime(), localed);
}
return app.exec();
}
输出:
"en-US" "MMMM d" "March 17"
"de-DE" "d. MMMM" "17. März"
"fr-FR" "d MMMM" "17 mars"
"ru-RU" "d MMMM" "17 марта"
"zh-CN" "M月d日" "3月17日"
"ko-KR" "M월 d일" "3월 17일"
所以,我使用了 ICU 库。 DateTimePatternGenerator解决我的问题