https://github.com/newyaroslav/ztime-cpp
C ++ library for working with date and time
https://github.com/newyaroslav/ztime-cpp
cpp julian-date julian-day moon-phase ntp ntp-client oadate time-library timestamp unix-timestamp utc
Last synced: 25 days ago
JSON representation
C ++ library for working with date and time
- Host: GitHub
- URL: https://github.com/newyaroslav/ztime-cpp
- Owner: NewYaroslav
- License: mit
- Created: 2021-09-11T21:10:16.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-02-25T06:07:57.000Z (about 2 years ago)
- Last Synced: 2023-05-07T00:23:26.435Z (about 2 years ago)
- Topics: cpp, julian-date, julian-day, moon-phase, ntp, ntp-client, oadate, time-library, timestamp, unix-timestamp, utc
- Language: C++
- Homepage:
- Size: 2.22 MB
- Stars: 7
- Watchers: 2
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ztime-cpp
C ++ library for working with date and time
> boost::posix_time, std, boost ::chrono... надо учиться эффективно использовать чужие велосипеды, иначе легко завязнуть в своих...Ztime это простая **C++** библиотека для работы с меткой времени (*timestamp*) и "понятной датой" (*human readable date*). Ранее библиотека называлась [xtime](https://github.com/NewYaroslav/xtime_cpp). Для совместимости с Visual Studio название было изменено.
Библиотека поддерживает стандарты **C++11** и **C++14**.## Описание
Данная библиотека представляет собой сборник алгоритмов, классов, функций и констант для удобной работы с временем:
* Измерение точного времени при помощи NTP
* Получение реального времени компьютера с точностью до микросекунд
* Преобразование даты в метку времени и обратно
* Парсинг строк или формирование строки из даты
* Расчет фаз Луны, поиск следующего новолуния
* Преобразование UINX времени в OLE Automation Date и обратно
* Получение секунды, минуты, часа дня из метки времени, получение последней метки времени месяца и т.п.
* И многие другие возможности...Форматы времени, с которыми работает библиотека:
* метка времени (*timestamp*)
* юлианский день (*JD или JDN*)
* дата автоматизации (*OADate*)
* "понятная дата" (*human readable date*)Файлы *ztime.hpp*, *ztime_cpu_time.hpp*, *ztime_ntp.hpp* содержат подробные комментарии.
Для хранения и преобразования меток времени используется тип данных *uint64*, поэтому у данной библиотеки нет [проблемы 2038 года](https://en.wikipedia.org/wiki/Year_2038_problem)
Примеры использования различных функций и классов можно найти в папке *code_blocks/test*.
## Пример использования
```cpp
#include
#include "ztime_ntp.hpp"
#include "ztime.hpp"int main() {
ztime::ntp::init();// Time synchronized with the Internet
std::cout << "ntp timestamp (us): " << ztime::ntp::get_timestamp_us() << std::endl;
std::cout << "ntp timestamp (s): " << ztime::ntp::get_timestamp() << std::endl;
std::cout << "ntp timestamp (s): " << ztime::ntp::get_ftimestamp() << std::endl;
std::cout << "ntp offset (us): " << ztime::ntp::get_offset_us() << std::endl;// Computer time
std::cout << "pc timestamp (us): " << ztime::get_timestamp_us() << std::endl;
std::cout << "pc timestamp (s): " << ztime::get_timestamp() << std::endl;
std::cout << "pc timestamp (s): " << ztime::get_ftimestamp() << std::endl;// Date
std::cout << "date: " << ztime::get_timestamp(17, 5, 2021) << std::endl;
std::cout << "date: " << ztime::get_timestamp(17, 5, 2021, 11, 5, 50) << std::endl;DateTime iTime(12, 6, 2013, 15, 23, 01);
iTime = DateTime("2013-12-06T15:23:01+00:00");ztime::timestamp_t timestamp = iTime.get_timestamp();
// translating GMT time during CET
DateTime iTimeCET(convert_gmt_to_cet(timestamp));
timestamp = iTimeCET.get_timestamp();std::cout << "date: " << ztime::get_str_date_time(timestamp) << std::endl;
// Julian day
std::cout << "jd: " << ztime::get_julian_date(17.5, 5, 2021) << std::endl;
std::cout << "jd: " << ztime::get_julian_date(17, 5, 2021, 11, 5, 50) << std::endl;
std::cout << "jdn: " << ztime::get_julian_day_number(1, 1, 1970) << std::endl;// Moon Phase
ztime::MoonPhase moon_phase;
moon_phase.init(ztime::get_ftimestamp(18, 5, 2021, 0, 0,0));std::cout << "age: " << moon_phase.age << std::endl;
std::cout << "age_in_degrees: " << moon_phase.age_in_degrees << std::endl;
std::cout << "phase: " << moon_phase.phase << std::endl;std::cout << "get_moon_phase: " << ztime::get_moon_phase(ztime::get_ftimestamp(18, 5, 2021, 0, 0, 0)) << std::endl;
std::cout << "get_moon_phase: " << ztime::get_moon_phase_v2(ztime::get_ftimestamp(18, 5, 2021, 0, 0, 0)) << std::endl;
std::cout << "get_moon_age: " << ztime::get_moon_age(ztime::get_ftimestamp(18, 5, 2021, 0, 0,0)) << std::endl;return 0;
}```
## Как установить?
Просто добавьте файл *ztime.cpp* в свой проект. Подключите заголовочный файл *ztime.hpp*, а также, если нужно, *ztime_cpu_time.hpp*, *ztime_ntp.hpp*.
Подробности использования смотрите в **DESCRIPTION.md**