Berkus
std::chrono::nanoseconds duration</*signed integer type of at least 64 bits*/, std::nano> std::chrono::microseconds duration</*signed integer type of at least 55 bits*/, std::micro> std::chrono::milliseconds duration</*signed integer type of at least 45 bits*/, std::milli> вот например типы duration
Igor
какой сделаешь тип Duration то и храни
ок, спасибо восхищаюсь интерфейсами хроно, но никак не могу уложить в голове, как именно она под капотом работает :(
Ignat
ок, спасибо восхищаюсь интерфейсами хроно, но никак не могу уложить в голове, как именно она под капотом работает :(
офигенные интерфейсы, выглядят так, как будто их создатели никогда не слышали о високосных секундах
Vsevolod
за leap seconds астрономам надо рвать яйца раскаленными клещами
Vsevolod
и тех идиотов, что протащили их в канпутеры - тоже
Ignat
согласен, ишь чё выдумали — не быть консистентными с крестовым говном
Vsevolod
дело не в крестовом говне, а в том, что текущая реализация leap seconds - это феерия долбоебизма
Vsevolod
учитывая, что у каждой кофеварки есть ntp
Vsevolod
а с unix timestamp в leap seconds происходит вообще "кишки расчлененка"
Vsevolod
так, что выключают все БД, а биржи останавливают торги
Vsevolod
потому что дважды тикающая секунда - это очень-очень херово
Vsevolod
а по ним время можно считать?
Vsevolod
уау
Vsevolod
ну, разве что от последнего ребута, да
Aidar
можно скидывать времяотвремени соответствие монотоные->человекочитаемые
Aidar
ну, разве что от последнего ребута, да
можно сделать глобальные монотонные часы
Vsevolod
можно, но этим никто не занят, зато вредить leap секундами - это запросто
Vsevolod
при том, что ntp мог бы спокойно амортизировать эффект leap секунды
Vsevolod
без этих ебанистических двойных тиков
Matwey
можно сделать глобальные монотонные часы
Так используй TAI и не напрягайся, потом пересчитаешь.
Matwey
о оно уже есть?
В смысле? С 70-х годов есть
Vsevolod
вот только пересчитывать его в utc трудновато
Vsevolod
то есть, x в tai не выражается через y в utc формулой
Vsevolod
только таблицами
Matwey
секунду прибавить по известному списку?
Matwey
ну, что поделать. трудно конечно придется какое-то дерево писать чтобы в него список интервалов загрузить
Vsevolod
так список зависит от того, когда та или иная leap second была добавлена
Matwey
и осуществить по нему поиск
Vsevolod
угу
Oleg
Объясните мне, любители високосных секунд, почему их внедряют отдельным костылём, а не вписывают в таймзоны. Повторяющийся час в зонах с Daylight Saving Time вроде бы никого не смущает.
Matwey
ну список есть в свободном доступе
Vsevolod
есть, но его актуальность надо постоянно проверять
Matwey
ну что поделать. неочень понятно, правда зачем тебе вообще UTC
Vsevolod
ну вот почему-то любят всякие биржи в нем время передавать
Vsevolod
у себя-то в сарае только TAI!
Matwey
это они от незнания
Matwey
chrono мне вполне нравится. но високосные секунды это скорее в область календарей и часовых зон, которых нет в chrono
Ignat
казалось бы, не надо завозить сущность minute, которая не соответствует минутам в реальном мире
Matwey
Кстати, в Марокко по-моему часовые пояса переводят как повелит их Король. Каждый год в свой день.
Vsevolod
так в России также
Vsevolod
как повелит Король, так и таймзона меняется
Vsevolod
DST волею Царя объявляется для народа
Ignat
Вполне соответсвует
Нет, не вполне. Нет часовых зон и календарей — не должно быть и минут.
Matwey
Нет, не вполне. Нет часовых зон и календарей — не должно быть и минут.
Минута это просто единица измерения, просто она 60-ричная. Тебя же не смущает что есть метры и километры.
Matwey
Вообще мысль интересная.
Matwey
Я не понимаю технических причин по которым я не мог бы поставить часовую зону своего Linux в шкалу TAI
Matwey
Понимаю только психологические
Dmitry
Надо б в chrono свои операции для преобразований в даты и обратно, без сишных tm/time_t...
Dmitry
clock::to_time_t -> greegorian day num -> { year, month, day }
Dmitry
Это вот вручную можно написать, но неплохо бы в библиотеке.
Dmitry
И constexpr.
Dmitry
Библиотечные clandar_date/day_time.
Alexander "SonnySlave"
ух как работу с датами завезут в С++20 - заживём 😊
Dmitry
О, а планируется?
Alexander "SonnySlave"
Dmitry
Ну не знаю, этож динамика получается, tzdatabase надож парсить, загружать...
Berkus
https://github.com/HowardHinnant/date
Alexander "SonnySlave"
Распиздяйство, сэр
Alexander "SonnySlave"
всё очень медленно ползёт. Пиши пропозалы, будут фикситься различные части
Dmitry
Ну... в boost то зональные их поделки тоже заглохди.
Matwey
Говард это тоже пилит, пока не в стд но либа уже есть
Вот как допилит к нему начнутся претензии по поводу африканских монархов
Dmitry
Это уже не к нему
Dmitry
Там просто загружается IANA TZ database.
Berkus
Вот как допилит к нему начнутся претензии по поводу африканских монархов
он сделал нормальный парсер IANA TZ дальше ебитесь сами
Dmitry
Слишком много там наружу. Можно сделать тоньше интерфейс через time_t тот же например. И универсальнее.
Dmitry
что-то вроде // convert UTC time to local template<class Clock, class Duration> std::chrono::time_point<Clock, Duration> zone::to_local( const std::chrono::time_point<Clock, Duration>& utc_time) const { auto t = Clock::to_time_t(std::chrono::floor<std::chrono::seconds😠dt)); auto off = get_offset(utc_time); return utc_time + off; }
Dmitry
без привязки к system_clock
Berkus
Слишком много там наружу. Можно сделать тоньше интерфейс через time_t тот же например. И универсальнее.
надо не универсальный интерфейс а гибкий, это все таки системная либа будет
Dmitry
Так и я ж про гибкость. Оно требует system clock. А можно сделать просто получение offset через time_t. Time_t здесь как точка соприкосновения специализаций chrono::time_point.
Dmitry
Ну и для header only оно слишком тяжёловато.
Dmitry
Time_point_cast и to_time_t кстати чот тоже как то не гибкие :)
Dmitry
Floor<seconds> приходится везде добавлять чтобы одинаково работало для времени до и после эпохи.