Как можно заменит "янв на Jan" при установки даты времени

103
15 февраля 2022, 14:20

Написал следующий код.

void SettingsClock::on_dateTimeEdit_dateTimeChanged(const QDateTime &dateTime)
{
    //system("date -s \"19 APR 2015 11:14:00\"");
    QString datetime;
    datetime = "date -s ";
    datetime += "\"";
    datetime += dateTime.toString("dd MMM yy hh:mm:ss");
    datetime += "\"";
    qDebug() << datetime;
    const char *data = datetime.toAscii();
    qDebug() << data;
    system(data);
    system("hwclock -w");
}

Ничего особенного, просто установка часов. Но когда пытаюсь установить часы получаю date -s "02 янв 00 00:00:00". Вот этот янв портит все. Линукс не хочет его принимать пишет

invalid date '02 \321\217\320\275\320\262 00 00:00:00'

Как можно заменит янв на Jan?

Решение если кому надо:

   QString datetime;
   datetime = "date -s ";
   datetime += "\"";
   QLocale loc(QLocale::English, QLocale::UnitedStates);
   datetime += loc.toString(dateTime, "dd MMM yy hh:mm:ss");
   datetime += "\"";
   const char *data = datetime.toAscii();
   system(data);
   system("hwclock -w");
Answer 1

Проблема заключается в том, что у Вас используется неправильная локализация. Вам нужно ее установить вполне конкретной. Смотрите пример:

#include <QCoreApplication>
#include <QDateTime>
#include <QDebug>
#include <QLocale>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    qDebug()<<QDateTime::currentDateTime().toString("dd MMM yy hh:mm:ss"); // неправильный вывод
    QLocale loc(QLocale::English, QLocale::UnitedStates);
    qDebug()<<loc.toString(QDateTime::currentDateTime(), "dd MMM yy hh:mm:ss"); // вывод в американской локализации
    return a.exec();
}

Вообще, данный вопрос является дубликатом вот этого: link

READ ALSO
Шаблонное продвижение типа

Шаблонное продвижение типа

Есть шаблонная функция, которая должна считать сумму двух значений одного типаКак узнать (с помощью <type_traits>?) возвращаемый тип этой функции,...

66
Нужна идея для проекта

Нужна идея для проекта

В общем, нужна идея для проекта(всего скорее open source), стаж 45 года знаю c++

67
CUDA вызов kernel в цикле

CUDA вызов kernel в цикле

Стоит задача, нужно вызывать ядро в цикле, но после первой итерации скалярное произведение начинает считать неправильноЯдро:

93
Переместить или скопировать элемент jquery

Переместить или скопировать элемент jquery

UPD: Вот такая конструкция работает, но получается выбрать не конкретный элемент, после которого нужно поставить блок, а все элементы класса...

92