Qt QDateTime toString(“h:m:s ap”)ap/a/ap/a缺失
我注意到在将日期转换为字符串时缺少“ap/a/ap/a”。对于“h:m:s ap”,即我得到“11:5:42”。对于每个“应付账款/应付账款/应付账款”表格,情况也是如此 我错过了什么Qt QDateTime toString(“h:m:s ap”)ap/a/ap/a缺失,qt,Qt,我注意到在将日期转换为字符串时缺少“ap/a/ap/a”。对于“h:m:s ap”,即我得到“11:5:42”。对于每个“应付账款/应付账款/应付账款”表格,情况也是如此 我错过了什么 void DecoderBr1::recordOnFile(QDateTime dateTime, QByteArray ba) { QString filename(dateTime.toString("yyyy MMMM dd@HH.mm.ss zzz ap")); filename.appe
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);
}
这取决于您所在的地区。并非每个语言环境都支持AM/PM格式。 例如,我的默认语言环境是“it_it”,不打印“AM/PM”。相反,设置另一个区域设置(例如“en_en”)会按预期工作
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"
QDateTime t=QDateTime::fromString(“2015-07-16T19:20:30+01:00”,Qt::ISODate);
QString st=t.toString(“yyyy-MMMMdd@HH.mm.sszzz ap”);
QString locale\u st\u HH=QLocale(“en\u en”)。toString(t,“yyyy-MMMMdd@HH.mm.sszzz ap”);
QString locale\u st\u hh=QLocale(“en\u en”)。toString(t,“yyyy-MMMMdd@hh.mm.sszzz ap”);
qDebug()并非所有语言环境都支持此格式的QDateTime
输出
对于结果,您需要创建带有参数locale(语言、国家)的变量,这些参数支持该变量。例如:
QLocale eng(QLocale::English, QLocale::UnitedStates);
然后,您可以将方法与所选区域设置一起使用,如下所示:
qDebug() << eng.toString(datetime, "yyyy MMMM dd@HH.mm.ss zzz ap");
qDebug()您可以显示您的代码吗?问题经过编辑以添加代码。因为您在示例中使用前导零(00到23,即使使用AM/PM显示)来编写HH?HH小时,您可以更改自己的区域设置,并且不再交换它。@t3ft3l--i No,同样使用H打印19H=没有前导零的小时(0到23,即使使用AM/PM显示)