Как сгенерировать метку времени для HTTP-заголовка If-Modified-Since из QDateTime? - PullRequest
2 голосов
/ 07 июня 2011

Я хочу установить заголовок If-Modified-Since-на запрос и взять время из метки времени в файле.Поэтому я извлек метку времени в QDateTime.Я мог бы создать нечто похожее на формат даты, используемый HTTP, но мой сервер и мой клиент используют разные часовые пояса.Есть ли способ получить строку часового пояса из Qt или другой способ создать строку для заголовка.Вот мой код:

QLocale locale(QLocale::English, QLocale::UnitedStates);
QString modificationDate = locale.toString(fileinfo.lastModified(), "ddd, dd MMM yyyy hh:mm:ss 'GMT'");

Я должен установить языковой стандарт, потому что системный языковой стандарт отличается, и сервер не понимает формат, сгенерированный таким образом.Было бы полезно, если бы я мог получить часовой пояс из Qt, чтобы я мог добавить его в строку вместо постоянной «GMT».Но я не нашел способа узнать часовой пояс, который использует Qt.

Ответы [ 2 ]

2 голосов
/ 07 июня 2011

Я думаю, что это будет делать:

QString modificationDate = fileinfo.lastModified().toUTC().toString("ddd, dd MMM yyyy hh:mm:ss") + "GMT";
0 голосов
/ 28 июля 2017

Вот немного более элегантное решение, которое используется внутри Qt:

QByteArray QNetworkHeadersPrivate::toHttpDate(const QDateTime &dt)
{
    return QLocale::c().toString(dt, QLatin1String("ddd, dd MMM yyyy hh:mm:ss 'GMT'"))
        .toLatin1();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...