Skip to content

Commit f60aa03

Browse files
committedSep 28, 2021
повышена точность времени и добавлена поддержка ntp
1 parent 2984d3f commit f60aa03

17 files changed

+1879
-3828
lines changed
 

‎DESCRIPTION.md

+627
Large diffs are not rendered by default.

‎README.md

+97
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,99 @@
11
# ztime-cpp
22
C ++ library for working with date and time
3+
4+
![logo](doc/logo.png)
5+
> boost::posix_time, std, boost ::chrono... надо учиться эффективно использовать чужие велосипеды, иначе легко завязнуть в своих...
6+
7+
Простая библиотека **C++** для работы с меткой времени (*timestamp*) и "понятной датой" (*human readable date*). Ранее библиотека называлась [xtime](https://github.com/NewYaroslav/xtime_cpp). Для совместимости с Visual Studio название было изменено.
8+
Библиотека поддерживает стандарты **C++11** и **C++14**.
9+
10+
## Описание
11+
12+
Данная библиотека представляет собой сборник алгоритмов, классов, функций и констант для удобной работы с веременем:
13+
14+
* Измерение точного времени при помощи NTP
15+
* Получение реальноого времени компьютера с точностью до микросекунд
16+
* Преобразование даты в метку времени и обратно
17+
* Парсинг строк или формирование строки из даты
18+
* Расчет фаз Луны, поиск следующего новолуния
19+
* Преобразование UINX времени в OLE Automation Date и обратно
20+
* Получение секунды, минуты, часа дня из метки времени, получение последней метки времени месяца и т.п.
21+
* И многие другие возможности...
22+
23+
Форматы времени, с которыми работает библиотека:
24+
25+
* метка времени (*timestamp*)
26+
* юлианский день (*JD или JDN*)
27+
* дата автоматизации (*OADate*)
28+
* "понятная дата" (*human readable date*)
29+
30+
Файлы *ztime.hpp*, *ztime_cpu_time.hpp*, *ztime_ntp.hpp* содежрат подробные комментарии.
31+
32+
Для хранения и преобразования меток времени используется тип данных *uint64*, поэтому у данной библиотеки нет [проблемы 2038 года](https://en.wikipedia.org/wiki/Year_2038_problem)
33+
34+
Примеры использования различных функций и классов можно найти в папке *code_blocks/test*.
35+
36+
## Пример использования
37+
38+
```cpp
39+
#include <iostream>
40+
#include "ztime_ntp.hpp"
41+
#include "ztime.hpp"
42+
43+
int main() {
44+
ztime::ntp::init();
45+
46+
// Time synchronized with the Internet
47+
std::cout << "ntp timestamp (us): " << ztime::ntp::get_timestamp_us() << std::endl;
48+
std::cout << "ntp timestamp (s): " << ztime::ntp::get_timestamp() << std::endl;
49+
std::cout << "ntp timestamp (s): " << ztime::ntp::get_ftimestamp() << std::endl;
50+
std::cout << "ntp offset (us): " << ztime::ntp::get_offset_us() << std::endl;
51+
52+
// Computer time
53+
std::cout << "pc timestamp (us): " << ztime::get_timestamp_us() << std::endl;
54+
std::cout << "pc timestamp (s): " << ztime::get_timestamp() << std::endl;
55+
std::cout << "pc timestamp (s): " << ztime::get_ftimestamp() << std::endl;
56+
57+
// Date
58+
std::cout << "date: " << ztime::get_timestamp(17, 5, 2021) << std::endl;
59+
std::cout << "date: " << ztime::get_timestamp(17, 5, 2021, 11, 5, 50) << std::endl;
60+
61+
DateTime iTime(12, 6, 2013, 15, 23, 01);
62+
iTime = DateTime("2013-12-06T15:23:01+00:00");
63+
64+
ztime::timestamp_t timestamp = iTime.get_timestamp();
65+
66+
// translating GMT time during CET
67+
DateTime iTimeCET(convert_gmt_to_cet(timestamp));
68+
timestamp = iTimeCET.get_timestamp();
69+
70+
std::cout << "date: " << ztime::get_str_date_time(timestamp) << std::endl;
71+
72+
73+
// Julian day
74+
std::cout << "jd: " << ztime::get_julian_date(17.5, 5, 2021) << std::endl;
75+
std::cout << "jd: " << ztime::get_julian_date(17, 5, 2021, 11, 5, 50) << std::endl;
76+
std::cout << "jdn: " << ztime::get_julian_day_number(1, 1, 1970) << std::endl;
77+
78+
// Moon Phase
79+
ztime::MoonPhase moon_phase;
80+
moon_phase.init(ztime::get_ftimestamp(18, 5, 2021, 0, 0,0));
81+
82+
std::cout << "age: " << moon_phase.age << std::endl;
83+
std::cout << "age_in_degrees: " << moon_phase.age_in_degrees << std::endl;
84+
std::cout << "phase: " << moon_phase.phase << std::endl;
85+
86+
std::cout << "get_moon_phase: " << ztime::get_moon_phase(ztime::get_ftimestamp(18, 5, 2021, 0, 0, 0)) << std::endl;
87+
std::cout << "get_moon_phase: " << ztime::get_moon_phase_v2(ztime::get_ftimestamp(18, 5, 2021, 0, 0, 0)) << std::endl;
88+
std::cout << "get_moon_age: " << ztime::get_moon_age(ztime::get_ftimestamp(18, 5, 2021, 0, 0,0)) << std::endl;
89+
90+
return 0;
91+
}
92+
93+
```
94+
95+
## Как установить?
96+
97+
Просто добавьте файл *ztime.cpp* в свой проект. Подключите заголовочный файл *ztime.hpp*, а также, если нужно, *ztime_cpu_time.hpp*, *ztime_ntp.hpp*.
98+
99+
Подробности использования смотрите в **DESCRIPTION.md**

0 commit comments

Comments
 (0)
Please sign in to comment.