QString format = "yyyy-MM-ddTHH:mm:ss.zzzzzz%1"; QString offset = now.offsetFromUtc() < 0 ? "-" : "+"; format = format.arg(offset + now.offsetFromUtc() / 3600, 2, 10, QChar('0'));代码错在哪里
时间: 2024-01-19 07:01:58 浏览: 25
这段代码中的错误在于 `QString::arg()` 方法的第二个参数应该是字段宽度,而不是小数位数。因为我们要在时间字符串中插入时区偏移量,所以需要指定字段宽度为 3。
正确的代码应该是这样的:
```cpp
QString format = "yyyy-MM-ddTHH:mm:ss.zzzzzz%1";
QString offset = now.offsetFromUtc() < 0 ? "-" : "+";
format = format.arg(offset + QString::number(qAbs(now.offsetFromUtc() / 3600)).rightJustified(2, '0'), 3, QLatin1Char('0'));
QString strTime = now.toString(format);
```
在上面的代码中,我们将字段宽度设置为 3,然后使用 `QString::number()` 方法将时区偏移量转换为字符串,并使用 `rightJustified()` 方法填充左侧的空位。最终得到的时间字符串类似于 `2021-07-28T16:22:08.000000+08:00`。
相关问题
QT 到毫秒yyyy-MM-dd HH:mm:ss.SSS
可以使用 QDateTime 类的 toString() 方法来实现这个格式。示例代码如下:
```cpp
QDateTime currentDateTime = QDateTime::currentDateTime();
QString formattedDateTime = currentDateTime.toString("yyyy-MM-dd HH:mm:ss.zzz");
```
其中,`currentDateTime` 表示当前时间,`formattedDateTime` 是格式化后的字符串。注意,毫秒的格式占位符是 `zzz`,而不是 `SSS`。
QString Str = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ") + ui->alldone_ld->text();
这段代码的作用是将当前时间和一个UI界面上名为"alldone_ld"的控件的文本内容拼接成一个字符串,并将该字符串赋值给名为"Str"的QString类型变量。具体来说,QDateTime::currentDateTime()方法用于获取当前时间,toString("yyyy-MM-dd hh:mm:ss ")则将该时间转换成指定格式的字符串,再与ui->alldone_ld->text()方法获取的文本内容拼接。最终得到的字符串包含了当前时间和UI界面上指定控件的文本内容。