Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt QDateTime toString(“h:m:s ap”)ap/a/ap/a缺失_Qt - Fatal编程技术网

Qt QDateTime toString(“h:m:s ap”)ap/a/ap/a缺失

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

我注意到在将日期转换为字符串时缺少“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.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显示)