 |
|

11.09.2023, 15:49
|
|
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами:
5332594
Репутация:
163
|
|
Описание: Класс для работы с датой и временем по Интернет-стандарту. Класс предназначен для работы с Windows и работает с его API. Временные зоны берутся из реестра Windows. Вы можете найти их всех по этому пути:
Код:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones
. Все функции задокументированы в коде, вы можете разобраться сами, посмотрев файл
. Метод
использует время UTC без часового пояса. Вы можете установить пояс самостоятельно, используя
Код:
date_time::set_timezone
. Вы так же можете инициализировать класс с помощью timestamp.
Демонстрация:
Очень краткий пример всего функционала: парсинг и форматирование по стандарту ISO_8601, а также указание начального часового пояса.
C++:
[CODE]
std
::
cout
Вы можете добавить/отнять секунды/минуты/часы/дни через std::chrono:
C++:
[CODE]
using
namespace
std
::
chrono_literals
;
std
::
cout
Исходник: https://github.com/Receiver1/date_time
|
|
|

11.09.2023, 19:35
|
|
Познавший АНТИЧАТ
Регистрация: 14.07.2019
Сообщений: 1,097
С нами:
3596877
Репутация:
183
|
|
У Буста есть date time, по сути он более практичен в этих вопросах
|
|
|

11.09.2023, 19:45
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
|
|
|

11.09.2023, 20:32
|
|
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами:
5332594
Репутация:
163
|
|
https://lightrun.com/answers/compil...-stdchronocurrent_zone-crashes-on-msvc-builds
Если ты не знал std::chrono::time_zone крашит на большинстве сборок Windows из-за устаревшей версии icu.dll, потому что Microsoft забыли поместить новую DLL в VC++ Redistributable. Почему-то обновлять его они не очень спешат. Ещё std::chrono::time_zone нужно инетрнет соединение для парсинга базы данных IANA
Сообщение от Digger Man
У Буста есть date time, по сути он более практичен в этих вопросах
Хорошо, подключай себе в проект boost datetime, который тянет за собой ещё несколько библиотек. И это всё ради того чтобы в паре мест обработать приходящее с сервера время.
|
|
|

11.09.2023, 23:45
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от Receiver
Хорошо, подключай себе в проект boost datetime, который тянет за собой ещё несколько библиотек. И это всё ради того чтобы в паре мест обработать приходящее с сервера время.
bro just use vcpkg
|
|
|

12.09.2023, 07:51
|
|
Познавший АНТИЧАТ
Регистрация: 29.09.2018
Сообщений: 1,292
С нами:
4012500
Репутация:
138
|
|
Сообщение от kin4stat
bro just use vcpkg
так это не отменяет того что у тебя бинарник будет весит мегабайт как минимум(или еще хуже дллки будут какие-то рядом валятся)
|
|
|

12.09.2023, 11:00
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от F0RQU1N and
так это не отменяет того что у тебя бинарник будет весит мегабайт как минимум(или еще хуже дллки будут какие-то рядом валятся)
Сейчас бы 200 кб экономить в 2023, когда рядом Discord на электроне не думает даже об экономии мегабайтов
|
|
|

12.09.2023, 11:42
|
|
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами:
5332594
Репутация:
163
|
|
Сообщение от F0RQU1N and
так это не отменяет того что у тебя бинарник будет весит мегабайт как минимум(или еще хуже дллки будут какие-то рядом валятся)
Если линкуешь статически, то DLL'ок не будет. На счёт веса полная правда.
Сообщение от kin4stat
Сейчас бы 200 кб экономить в 2023, когда рядом Discord на электроне не думает даже об экономии мегабайтов
Тем не менее тащить за собой кучу кода ради одного datetime не очень сообразительно. Если ты хороший разработчик, то должен позаботится так же о размере бинарника. Ты сможешь предугадать как он будет вести себя под протектом? Ты сможешь предугадать как он поведёт себя в незвестной среде выполнения? Сейчас расскажу забавный факт: оказыватся OpenSSL при инициализации вызывает под капотом GetModuleHandleW, который всего возвращает NULL под EAC. Реализация boost независима от системы, в то время как этот класс заточен конкретно под Windows без лишних запросов и библиотек. Он использует всего 1 импорт, который есть во всех сборках Windows - advapi32.dll. Тоже самое касается и OpenSSL: какой смысл тянуть себе в проект такую обширную библиотеку ради шифрования, когда есть CNG и ты точно знаешь что твое приложение будет работать только под Windows?
Обновление от 12.09.2023:
- Добавлены операторы для работы с
Код:
value_type = long long
;
- Исправлен код операторов сложения и вычитания;
|
|
|

12.09.2023, 14:06
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от Receiver
Тем не менее тащить за собой кучу кода ради одного datetime не очень сообразительно. Если ты хороший разработчик, то должен позаботится так же о размере бинарника. Ты сможешь предугадать как он будет вести себя под протектом?
NIH-синдром короче, понятно.
Я бы предпочел все же проверенную временем библиотеку
|
|
|

12.09.2023, 16:01
|
|
Познавший АНТИЧАТ
Регистрация: 29.09.2018
Сообщений: 1,292
С нами:
4012500
Репутация:
138
|
|
Сообщение от Receiver
Если линкуешь статически, то DLL'ок не будет. На счёт веса полная правда.
ну так я про это и сказал если статик то большой вес, если нет то дохуя дллок всяких))))
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|