Функция os.date не возвращает желаемых результатов

Я вставляю строковую переменную в мою таблицу MySQL, используя это os.date() вызов функции:

tSend["sDate"] = os.date( "%Y-%m-%d %X", Core.GetUserValue(v, 25) )

Таблица tSend пересылается другой функции, которая вставляет ее в таблицу.

Это не работает как требуется. Например, Он вставит 2013-01-31 12:59:59 вместо 2013-01-31 00:59:59 в таблицу. Это происходит со всеми часами после 1159 часов.

Согласно книге Луа Пила,

%X подразумевает время (например, 23:48:10)

Я не могу использовать NOW() в моем запросе как время, сгенерированное Core.GetUserValue(v, 25) является свойством PtokaX и задается как время входа пользователя в секундах с 1.1.1970.

В чем здесь может быть проблема? Простой код Lua с

print( os.date("%Y-%m-%d %X", 1355586777) )

генерирует 2012-12-15 21:22:57 как выходные данные (где 1355586777 это значение, которое я получил от Core.GetUserValue вызов).

Раньше, у меня был %H:%M:%S вместо %X но я думал об использовании %X и, похоже, мне придется вернуться обратно.

1 ответ

Решение

Я думаю, что нашел ошибку в поведении.

Я думаю, что это может быть потому, что PtokaX написан на C, а затем через него вызываются скрипты lua. Поскольку strftime определяет %X как

записывает локализованное представление времени (зависит от локали)

Это приводит к выводу времени в 12-часовом формате вместо 24-часового. Я все еще должен буду проверить это после 12:00 сегодня.

PS

Я не знаю как проверить locale формат даты, но я предполагаю, что это единственная действительная причина для такого поведения.


Я снова переключился на использование os.date( "%Y-%m-%d %X" ) в моих сценариях.

Другие вопросы по тегам