首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt QDateTime toString("h:m:s“) ap/a/AP/a缺失

Qt QDateTime toString("h:m:s“) ap/a/AP/a缺失
EN

Stack Overflow用户
提问于 2015-07-15 14:11:45
回答 2查看 4.5K关注 0票数 5

我注意到在将日期转换为字符串时缺少"ap/a/AP/a“。"h:m:s ap“,即我得到"11:5:42”。对于每个"ap/a/AP/a“表单,也会发生同样的情况。

我错过了什么?

代码语言:javascript
复制
void DecoderBr1::recordOnFile(QDateTime dateTime, QByteArray ba)
{
    QString filename(dateTime.toString("yyyy MMMM dd@HH.mm.ss zzz ap"));
    filename.append(".log");

    Recorder recorder;
    recorder.recordFile(filename, ba);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-15 14:42:30

这取决于你所在的地区。并不是每个地区都支持AM/PM格式。例如,我的默认区域设置为"it_IT“,不打印"AM/PM”。相反,设置另一个区域设置(例如"en_EN")会像预期的那样工作。

代码语言:javascript
复制
QDateTime t = QDateTime::fromString("2015-07-16T19:20:30+01:00", Qt::ISODate);
QString st = t.toString("yyyy MMMM dd@HH.mm.ss zzz ap");
QString locale_st_HH = QLocale("en_EN").toString(t, "yyyy MMMM dd@HH.mm.ss zzz ap");     
QString locale_st_hh = QLocale("en_EN").toString(t, "yyyy MMMM dd@hh.mm.ss zzz ap");

qDebug() << st; 
// With italian locale does not print AM/PM
// "2015 luglio 16@19.20.30 000 "

qDebug() << locale_st_HH; 
// With en_EN locale it works
//"2015 July 16@19.20.30 000 pm"

qDebug() << locale_st_hh; 
// With en_EN locale it works
// With hh it prints 07 pm instead of 19 pm // Credits to @t3ft3l--i
//"2015 July 16@07.20.30 000 pm"
票数 4
EN

Stack Overflow用户

发布于 2015-07-15 15:04:02

并非所有地区都支持这种格式的QDateTime输出。

对于结果,您需要创建带有支持它的参数locale(语言、国家)的变量QLocale。例如:

代码语言:javascript
复制
QLocale eng(QLocale::English, QLocale::UnitedStates);

然后,您可以在选定的区域设置中使用QLocale::toString()方法,如下所示:

代码语言:javascript
复制
qDebug() << eng.toString(datetime,  "yyyy MMMM dd@HH.mm.ss zzz ap");

你的例子对我很有帮助。这样就不能取代你的本土环境。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31432845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档