Как правильно обрабатывать часовые пояса в datetime-вводе из строки в Qt - PullRequest
2 голосов
/ 04 августа 2009

Я использую Qt для разбора XML-файла, который содержит метки времени в UTC. Конечно, в рамках программы я бы хотел, чтобы они перешли на местное время. В файле XML метки времени выглядят так: «2009-07-30T00: 32: 00Z».

К сожалению, при использовании метода QDateTime :: fromString () эти временные метки интерпретируются как находящиеся в местном часовом поясе. Хакерский способ решить эту проблему - добавить или вычесть правильное смещение часового пояса из этого времени, чтобы преобразовать его в «истинное» местное время. Однако есть ли способ заставить Qt понять, что я импортирую метку времени UTC, а затем автоматически конвертирую ее в местное время?

Ответы [ 3 ]

7 голосов
/ 04 августа 2009

Сделай так:

QDateTime timestamp = QDateTime::fromString(thestring);
timestamp.setTimeSpec(Qt::UTC); // mark the timestamp as UTC (but don't convert it)
timestamp = timestamp.toLocalTime() // convert to local time
1 голос
/ 07 февраля 2011

Обратите внимание, что полная поддержка часовых поясов еще не доступна в Qt, но, вероятно, будет в будущих версиях.

http://bugreports.qt -project.org / просмотр / QTBUG-10219

1 голос
/ 04 августа 2009

попробуйте использовать функцию setTime_t .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...