FormatTime, лишние часы

TheZipa

Участник
Сообщения
32
Реакции
7
Возникла проблема при форматировании времени через FormatTime. Если передать 4-ым аргументом 0, то строчка форматируется с лишними 3-мя часами.
Пример:

FormatTime():
FormatTime(szTotalPlayed, sizeof(szTotalPlayed), "%H h. %M m. %S s.", 0); // Получаем 03 h. 00 m. 00 s.

Как можно исправить такую проблему?
 

NickFox

Обычный лисюк
Сообщения
70
Реакции
69
Возникла проблема при форматировании времени через FormatTime. Если передать 4-ым аргументом 0, то строчка форматируется с лишними 3-мя часами.
Пример:

FormatTime():
FormatTime(szTotalPlayed, sizeof(szTotalPlayed), "%H h. %M m. %S s.", 0); // Получаем 03 h. 00 m. 00 s.

Как можно исправить такую проблему?
Учитывай разные часовые пояса. Пока где-то 0:00 (как надо), где-то время уже три ночи (как в Москве)
 

TheZipa

Участник
Сообщения
32
Реакции
7
Учитывай разные часовые пояса. Пока где-то 0:00 (как надо), где-то время уже три ночи (как в Москве)
Я тоже об этом думал, но если мне нужно получить время только в пределах нескольких часов, где часовой пояс не нужен, то что тогда сделать?
 

Kruzya

Raspberry Pi 4
Команда форума
Меценат
Сообщения
10,550
Реакции
8,726
@TheZipa, вручную посчитать. Ну часы же не сложно рассчитать из секунд.
 

NickFox

Обычный лисюк
Сообщения
70
Реакции
69
Я тоже об этом думал, но если мне нужно получить время только в пределах нескольких часов, где часовой пояс не нужен, то что тогда сделать?
Как вариант, могу предложить покопаться в варианте решения проблемы от Феникса: komashchenko/TimeZoneDatabase

Ну или вручную действительно, если промежуток небольшой
 

TheZipa

Участник
Сообщения
32
Реакции
7
@TheZipa, вручную посчитать. Ну часы же не сложно рассчитать из секунд.
Ну я отнимал по -10800, но там на меня exception напал со словами:
Exception:
L 03/14/2021 - 01:17:00: [SM] Exception reported: Invalid time format or buffer too small
Как я понял, то он ругается на отрицательное значение времени.
 

_wS_

Участник
Сообщения
335
Реакции
676
Если работать с более актуальными timestamp, а не теми, когда жили единороги, то sm_time_adjustment решает проблему.
Если будильник спешит на 3 часа, то просто отнимаешь их в cfg/sourcemod/sourcemod.cfg
sm_time_adjustment "-10800"

Но если это древнее timestamp, то sm_time_adjustment что-то не фурычит вбще.
Если тебе и правда нужно такое древнее точное время, то можешь попробовать uint расширение и FormatUTime.
Только там 0 указать нельзя (0 = GetTime()), можно от 1 до 4294967295. Если 1, то чётко выдаст "00 h. 00 m. 01 s.".
 

komashchenko

Идиот
Меценат
Сообщения
890
Реакции
2,242

TheZipa

Участник
Сообщения
32
Реакции
7
Если работать с более актуальными timestamp, а не теми, когда жили единороги, то sm_time_adjustment решает проблему.
Если будильник спешит на 3 часа, то просто отнимаешь их в cfg/sourcemod/sourcemod.cfg
sm_time_adjustment "-10800"

Но если это древнее timestamp, то sm_time_adjustment что-то не фурычит вбще.
Если тебе и правда нужно такое древнее точное время, то можешь попробовать uint расширение и FormatUTime.
Только там 0 указать нельзя (0 = GetTime()), можно от 1 до 4294967295. Если 1, то чётко выдаст "00 h. 00 m. 01 s.".
Удобнее всего было сделать через uint, всё работает. Большое спасибо за поддержку.
 
Сверху