{"id":19534879,"url":"https://github.com/newyaroslav/ztime-cpp","last_synced_at":"2025-04-26T14:35:32.879Z","repository":{"id":47130704,"uuid":"405483803","full_name":"NewYaroslav/ztime-cpp","owner":"NewYaroslav","description":"C ++ library for working with date and time","archived":false,"fork":false,"pushed_at":"2023-02-25T06:07:57.000Z","size":2324,"stargazers_count":7,"open_issues_count":1,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2023-05-07T00:23:26.435Z","etag":null,"topics":["cpp","julian-date","julian-day","moon-phase","ntp","ntp-client","oadate","time-library","timestamp","unix-timestamp","utc"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NewYaroslav.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-09-11T21:10:16.000Z","updated_at":"2023-03-07T07:04:27.000Z","dependencies_parsed_at":"2022-08-23T01:10:09.085Z","dependency_job_id":null,"html_url":"https://github.com/NewYaroslav/ztime-cpp","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NewYaroslav%2Fztime-cpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NewYaroslav%2Fztime-cpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NewYaroslav%2Fztime-cpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NewYaroslav%2Fztime-cpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NewYaroslav","download_url":"https://codeload.github.com/NewYaroslav/ztime-cpp/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224036195,"owners_count":17245035,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","julian-date","julian-day","moon-phase","ntp","ntp-client","oadate","time-library","timestamp","unix-timestamp","utc"],"created_at":"2024-11-11T02:16:24.330Z","updated_at":"2024-11-11T02:16:25.318Z","avatar_url":"https://github.com/NewYaroslav.png","language":"C++","readme":"# ztime-cpp\nC ++ library for working with date and time\n\n![logo](doc/logo.png)\n\u003e boost::posix_time, std, boost ::chrono... надо учиться эффективно использовать чужие велосипеды, иначе легко завязнуть в своих...\n\nZtime это простая **C++** библиотека для работы с меткой времени (*timestamp*) и \"понятной датой\" (*human readable date*). Ранее библиотека называлась [xtime](https://github.com/NewYaroslav/xtime_cpp). Для совместимости с Visual Studio название было изменено. \nБиблиотека поддерживает стандарты **C++11** и **C++14**.\n\n## Описание\n\nДанная библиотека представляет собой сборник алгоритмов, классов, функций и констант для удобной работы с временем:\n\n* Измерение точного времени при помощи NTP\n* Получение реального времени компьютера с точностью до микросекунд\n* Преобразование даты в метку времени и обратно\n* Парсинг строк или формирование строки из даты\n* Расчет фаз Луны, поиск следующего новолуния\n* Преобразование UINX времени в OLE Automation Date и обратно\n* Получение секунды, минуты, часа дня из метки времени, получение последней метки времени месяца и т.п.\n* И многие другие возможности...\n\nФорматы времени, с которыми работает библиотека:\n\n* метка времени (*timestamp*)\n* юлианский день (*JD или JDN*)\n* дата автоматизации (*OADate*)\n* \"понятная дата\" (*human readable date*)\n\nФайлы *ztime.hpp*, *ztime_cpu_time.hpp*, *ztime_ntp.hpp* содержат подробные комментарии.\n\nДля хранения и преобразования меток времени используется тип данных *uint64*, поэтому у данной библиотеки нет [проблемы 2038 года](https://en.wikipedia.org/wiki/Year_2038_problem)\n\nПримеры использования различных функций и классов можно найти в папке *code_blocks/test*.\n\n## Пример использования\n\n```cpp\n#include \u003ciostream\u003e\n#include \"ztime_ntp.hpp\"\n#include \"ztime.hpp\"\n\nint main() {\n\tztime::ntp::init();\n\n\t// Time synchronized with the Internet\n\tstd::cout \u003c\u003c \"ntp timestamp (us): \" \u003c\u003c ztime::ntp::get_timestamp_us() \u003c\u003c std::endl;\n\tstd::cout \u003c\u003c \"ntp timestamp  (s): \" \u003c\u003c ztime::ntp::get_timestamp() \u003c\u003c std::endl;\n\tstd::cout \u003c\u003c \"ntp timestamp  (s): \" \u003c\u003c ztime::ntp::get_ftimestamp() \u003c\u003c std::endl;\n\tstd::cout \u003c\u003c \"ntp offset    (us): \" \u003c\u003c ztime::ntp::get_offset_us() \u003c\u003c std::endl;\n\n\t// Computer time\n\tstd::cout \u003c\u003c \"pc  timestamp (us): \" \u003c\u003c ztime::get_timestamp_us() \u003c\u003c std::endl;\n\tstd::cout \u003c\u003c \"pc  timestamp  (s): \" \u003c\u003c ztime::get_timestamp() \u003c\u003c std::endl;\n\tstd::cout \u003c\u003c \"pc  timestamp  (s): \" \u003c\u003c ztime::get_ftimestamp() \u003c\u003c std::endl;\n\n\t// Date\n\tstd::cout \u003c\u003c \"date: \" \u003c\u003c ztime::get_timestamp(17, 5, 2021) \u003c\u003c std::endl;\n\tstd::cout \u003c\u003c \"date: \" \u003c\u003c ztime::get_timestamp(17, 5, 2021, 11, 5, 50) \u003c\u003c std::endl;\n\n\tDateTime iTime(12, 6, 2013, 15, 23, 01);\n\tiTime = DateTime(\"2013-12-06T15:23:01+00:00\");\n\n\tztime::timestamp_t timestamp = iTime.get_timestamp();\n\n\t// translating GMT time during CET\n\tDateTime iTimeCET(convert_gmt_to_cet(timestamp));\n\ttimestamp = iTimeCET.get_timestamp();\n\n\tstd::cout \u003c\u003c \"date: \" \u003c\u003c ztime::get_str_date_time(timestamp) \u003c\u003c std::endl;\n\n\n\t// Julian day\n\tstd::cout \u003c\u003c \"jd: \" \u003c\u003c ztime::get_julian_date(17.5, 5, 2021) \u003c\u003c std::endl;\n\tstd::cout \u003c\u003c \"jd: \" \u003c\u003c ztime::get_julian_date(17, 5, 2021, 11, 5, 50) \u003c\u003c std::endl;\n\tstd::cout \u003c\u003c \"jdn: \" \u003c\u003c ztime::get_julian_day_number(1, 1, 1970) \u003c\u003c std::endl;\n\n\t// Moon Phase\n\tztime::MoonPhase moon_phase;\n\tmoon_phase.init(ztime::get_ftimestamp(18, 5, 2021, 0, 0,0));\n\n\tstd::cout \u003c\u003c \"age: \" \u003c\u003c moon_phase.age \u003c\u003c std::endl;\n\tstd::cout \u003c\u003c \"age_in_degrees: \" \u003c\u003c moon_phase.age_in_degrees \u003c\u003c std::endl;\n\tstd::cout \u003c\u003c \"phase: \" \u003c\u003c moon_phase.phase \u003c\u003c std::endl;\n\n\tstd::cout \u003c\u003c \"get_moon_phase: \" \u003c\u003c ztime::get_moon_phase(ztime::get_ftimestamp(18, 5, 2021, 0, 0, 0)) \u003c\u003c std::endl;\n\tstd::cout \u003c\u003c \"get_moon_phase: \" \u003c\u003c ztime::get_moon_phase_v2(ztime::get_ftimestamp(18, 5, 2021, 0, 0, 0)) \u003c\u003c std::endl;\n\tstd::cout \u003c\u003c \"get_moon_age: \" \u003c\u003c ztime::get_moon_age(ztime::get_ftimestamp(18, 5, 2021, 0, 0,0)) \u003c\u003c std::endl;\n\n\treturn 0;\n}\n\n```\n\n## Как установить?\n\nПросто добавьте файл *ztime.cpp* в свой проект. Подключите заголовочный файл *ztime.hpp*, а также, если нужно, *ztime_cpu_time.hpp*, *ztime_ntp.hpp*.\n\nПодробности использования смотрите в **DESCRIPTION.md**","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnewyaroslav%2Fztime-cpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnewyaroslav%2Fztime-cpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnewyaroslav%2Fztime-cpp/lists"}