rucades 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/rucades/cplib/Blob.h +205 -163
- data/ext/rucades/cplib/CPPEnrollEnumerations.h +603 -0
- data/ext/rucades/cplib/DateTime.h +506 -455
- data/ext/rucades/cplib/StringProxy.h +229 -187
- data/ext/rucades/cplib/cpstldll.h +225 -0
- data/ext/rucades/extconf.rb +28 -12
- data/ext/rucades/rucades_about.cpp +3 -3
- data/ext/rucades/rucades_about.h +1 -1
- data/ext/rucades/rucades_algorithm.cpp +2 -2
- data/ext/rucades/rucades_algorithm.h +2 -2
- data/ext/rucades/rucades_attribute.cpp +3 -3
- data/ext/rucades/rucades_attribute.h +2 -2
- data/ext/rucades/rucades_attributes.cpp +2 -2
- data/ext/rucades/rucades_attributes.h +2 -2
- data/ext/rucades/rucades_basic_constraints.cpp +3 -3
- data/ext/rucades/rucades_basic_constraints.h +2 -2
- data/ext/rucades/rucades_blobs.cpp +3 -3
- data/ext/rucades/rucades_blobs.h +2 -2
- data/ext/rucades/rucades_certificate.cpp +3 -3
- data/ext/rucades/rucades_certificate.h +2 -2
- data/ext/rucades/rucades_certificate_status.cpp +2 -2
- data/ext/rucades/rucades_certificate_status.h +2 -2
- data/ext/rucades/rucades_certificates.cpp +8 -8
- data/ext/rucades/rucades_certificates.h +2 -2
- data/ext/rucades/rucades_crl.cpp +1 -1
- data/ext/rucades/rucades_crl.h +1 -1
- data/ext/rucades/rucades_eku.cpp +2 -2
- data/ext/rucades/rucades_eku.h +2 -2
- data/ext/rucades/rucades_ekus.cpp +3 -3
- data/ext/rucades/rucades_ekus.h +2 -2
- data/ext/rucades/rucades_encoded_data.cpp +1 -1
- data/ext/rucades/rucades_encoded_data.h +1 -1
- data/ext/rucades/rucades_enveloped_data.cpp +1 -1
- data/ext/rucades/rucades_enveloped_data.h +1 -1
- data/ext/rucades/rucades_extended_key_usage.cpp +2 -2
- data/ext/rucades/rucades_extended_key_usage.h +2 -2
- data/ext/rucades/rucades_hashed_data.cpp +1 -1
- data/ext/rucades/rucades_hashed_data.h +1 -1
- data/ext/rucades/rucades_key_usage.cpp +3 -3
- data/ext/rucades/rucades_key_usage.h +2 -2
- data/ext/rucades/rucades_oid.cpp +3 -3
- data/ext/rucades/rucades_oid.h +2 -2
- data/ext/rucades/rucades_private_key.cpp +3 -3
- data/ext/rucades/rucades_private_key.h +2 -2
- data/ext/rucades/rucades_public_key.cpp +2 -2
- data/ext/rucades/rucades_public_key.h +2 -2
- data/ext/rucades/rucades_raw_signature.cpp +2 -2
- data/ext/rucades/rucades_raw_signature.h +2 -2
- data/ext/rucades/rucades_recipients.cpp +2 -2
- data/ext/rucades/rucades_recipients.h +2 -2
- data/ext/rucades/rucades_signature_status.cpp +2 -2
- data/ext/rucades/rucades_signature_status.h +2 -2
- data/ext/rucades/rucades_signed_data.cpp +7 -7
- data/ext/rucades/rucades_signed_data.h +1 -1
- data/ext/rucades/rucades_signed_xml.cpp +2 -2
- data/ext/rucades/rucades_signed_xml.h +1 -1
- data/ext/rucades/rucades_signer.cpp +8 -8
- data/ext/rucades/rucades_signer.h +2 -2
- data/ext/rucades/rucades_signers.cpp +2 -2
- data/ext/rucades/rucades_signers.h +2 -2
- data/ext/rucades/rucades_store.cpp +2 -2
- data/ext/rucades/rucades_store.h +1 -1
- data/ext/rucades/rucades_symmetric_algorithm.cpp +3 -3
- data/ext/rucades/rucades_symmetric_algorithm.h +2 -2
- data/ext/rucades/rucades_version.cpp +2 -2
- data/ext/rucades/rucades_version.h +2 -2
- data/ext/rucades/stdafx.h +207 -121
- data/lib/rucades/version.rb +1 -1
- data/samples/encrypt_decrypt.rb +17 -14
- data/samples/sign_verify.rb +14 -17
- data/sig/rucades.rbs +850 -1
- metadata +3 -4
- data/ext/rucades/cpstldll.h +0 -183
- data/ext/rucades/errormsg.cpp +0 -561
- data/ext/rucades/errormsg.h +0 -31
|
@@ -1,26 +1,68 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright(
|
|
2
|
+
* Copyright (c) 2026, компания КриптоПро
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Разрешается повторное распространение и использование как в виде исходного
|
|
5
|
+
* кода, так и в двоичной форме, с изменениями или без, при соблюдении
|
|
6
|
+
* следующих условий:
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
8
|
+
* 1) При повторном распространении исходного кода должно оставаться
|
|
9
|
+
* указанное выше уведомление об авторском праве, этот список условий
|
|
10
|
+
* и последующий отказ от гарантий.
|
|
11
|
+
*
|
|
12
|
+
* 2) При повторном распространении двоичного кода должна сохраняться
|
|
13
|
+
* указанная выше информация об авторском праве, этот список условий
|
|
14
|
+
* и последующий отказ от гарантий в документации и/или в других материалах,
|
|
15
|
+
* поставляемых при распространении.
|
|
16
|
+
*
|
|
17
|
+
* ЭТА ПРОГРАММА ПРЕДОСТАВЛЕНА БЕСПЛАТНО ВЛАДЕЛЬЦАМИ АВТОРСКИХ ПРАВ И/ИЛИ
|
|
18
|
+
* ДРУГИМИ СТОРОНАМИ "КАК ОНА ЕСТЬ" БЕЗ КАКОГО-ЛИБО ВИДА ГАРАНТИЙ, ВЫРАЖЕННЫХ
|
|
19
|
+
* ЯВНО ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ИМИ, ПОДРАЗУМЕВАЕМЫЕ
|
|
20
|
+
* ГАРАНТИИ КОММЕРЧЕСКОЙ ЦЕННОСТИ И ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ. НИ В КОЕМ
|
|
21
|
+
* СЛУЧАЕ, ЕСЛИ НЕ ТРЕБУЕТСЯ СООТВЕТСТВУЮЩИМ ЗАКОНОМ, ИЛИ НЕ УСТАНОВЛЕНО В
|
|
22
|
+
* УСТНОЙ ФОРМЕ, НИ ОДИН ВЛАДЕЛЕЦ АВТОРСКИХ ПРАВ И НИ ОДНО ДРУГОЕ ЛИЦО, КОТОРОЕ
|
|
23
|
+
* МОЖЕТ ИЗМЕНЯТЬ И/ИЛИ ПОВТОРНО РАСПРОСТРАНЯТЬ ПРОГРАММУ, КАК БЫЛО СКАЗАНО
|
|
24
|
+
* ВЫШЕ, НЕ НЕСЁТ ОТВЕТСТВЕННОСТИ, ВКЛЮЧАЯ ЛЮБЫЕ ОБЩИЕ, СЛУЧАЙНЫЕ, СПЕЦИАЛЬНЫЕ
|
|
25
|
+
* ИЛИ ПОСЛЕДОВАВШИЕ УБЫТКИ, ВСЛЕДСТВИЕ ИСПОЛЬЗОВАНИЯ ИЛИ НЕВОЗМОЖНОСТИ
|
|
26
|
+
* ИСПОЛЬЗОВАНИЯ ПРОГРАММЫ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ПОТЕРЕЙ ДАННЫХ,
|
|
27
|
+
* ИЛИ ДАННЫМИ, СТАВШИМИ НЕПРАВИЛЬНЫМИ, ИЛИ ПОТЕРЯМИ, ПРИНЕСЕННЫМИ ИЗ-ЗА ВАС ИЛИ
|
|
28
|
+
* ТРЕТЬИХ ЛИЦ, ИЛИ ОТКАЗОМ ПРОГРАММЫ РАБОТАТЬ СОВМЕСТНО С ДРУГИМИ ПРОГРАММАМИ),
|
|
29
|
+
* ДАЖЕ ЕСЛИ ТАКОЙ ВЛАДЕЛЕЦ ИЛИ ДРУГОЕ ЛИЦО БЫЛИ ИЗВЕЩЕНЫ О ВОЗМОЖНОСТИ
|
|
30
|
+
* ТАКИХ УБЫТКОВ.
|
|
31
|
+
*
|
|
32
|
+
* Copyright (c) 2026, CryptoPro Company All rights reserved.
|
|
33
|
+
*
|
|
34
|
+
* Redistribution and use in source and binary forms, with or without
|
|
35
|
+
* modification, are permitted provided that the following conditions are met:
|
|
36
|
+
*
|
|
37
|
+
* 1) Redistributions of source code must retain the above copyright notice,
|
|
38
|
+
* this list of conditions and the following disclaimer.
|
|
20
39
|
*
|
|
21
|
-
*
|
|
40
|
+
* 2) Redistributions in binary form must reproduce the above copyright notice,
|
|
41
|
+
* this list of conditions and the following disclaimer in the documentation
|
|
42
|
+
* and/or other materials provided with the distribution.
|
|
43
|
+
*
|
|
44
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
45
|
+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
46
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
47
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
48
|
+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
49
|
+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
50
|
+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
51
|
+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
52
|
+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
53
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
|
54
|
+
* THE POSSIBILITY OF SUCH DAMAGE.
|
|
22
55
|
*/
|
|
23
56
|
|
|
57
|
+
/*!
|
|
58
|
+
* \file $RCSfile$
|
|
59
|
+
* \version $Revision$
|
|
60
|
+
* \date $Date:: $
|
|
61
|
+
* \author $Author$
|
|
62
|
+
*
|
|
63
|
+
* \brief Класс для работы со временем.
|
|
64
|
+
*/
|
|
65
|
+
|
|
24
66
|
#ifndef _CPLIB_DATETIME_H_INCLUDED
|
|
25
67
|
#define _CPLIB_DATETIME_H_INCLUDED
|
|
26
68
|
|
|
@@ -38,474 +80,483 @@ typedef long long LONGLONG;
|
|
|
38
80
|
|
|
39
81
|
namespace CryptoPro {
|
|
40
82
|
|
|
41
|
-
inline ULONG MyInt64Div32(ULONGLONG ll1, ULONG l2)
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
dest.tm_isdst = 0;
|
|
85
|
-
return dest;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
class CPLIB_CLASS CDateTime;
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* \class CDateTimeSpan DateTime.h <cplib/DateTime.h>
|
|
92
|
-
* \brief ������ �������.
|
|
93
|
-
*
|
|
94
|
-
* ����� ������ ������ ������� � ��������� �� �������������.
|
|
95
|
-
*
|
|
96
|
-
* \sa CDateTime
|
|
97
|
-
*/
|
|
98
|
-
class CPLIB_CLASS
|
|
99
|
-
CDateTimeSpan
|
|
100
|
-
{
|
|
101
|
-
public:
|
|
102
|
-
/// ������� ������ ������
|
|
103
|
-
explicit CDateTimeSpan();
|
|
104
|
-
/**
|
|
105
|
-
* \brief ������� � �������������� ������
|
|
106
|
-
*
|
|
107
|
-
* \param alya_generalizedTime [in] ��������� ������������� ������� �������
|
|
108
|
-
* \remarks ������ ���������� ������������� ���������: "YYYYMMDDhhmmss.ddddddZ"
|
|
109
|
-
* ��� YYYY - ����, MM - ������, DD - ���, hh - ����, mm - ������, ss - �������,
|
|
110
|
-
* dddddd - ���� ������� (�� 6-�� ������, ����� ������������� ������ � ��������������
|
|
111
|
-
* ������. �������: "00050600114530Z", "00000000000023.123Z", "00000000000003.123456Z"
|
|
112
|
-
*/
|
|
113
|
-
explicit CDateTimeSpan( const char* alya_generalizedTime);
|
|
83
|
+
inline ULONG MyInt64Div32(ULONGLONG ll1, ULONG l2) {
|
|
84
|
+
return static_cast<ULONG>(ll1 / l2);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
inline void ULongLongToLowHigh(ULONGLONG ll, DWORD& low, DWORD& high) {
|
|
88
|
+
low = static_cast<DWORD>(ll);
|
|
89
|
+
high = static_cast<DWORD>(ll >> 32);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
inline ULONGLONG ULowHighToLongLong(DWORD low, DWORD high) {
|
|
93
|
+
return static_cast<ULONGLONG>(((static_cast<ULONGLONG>(high)) << 32) + low);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
inline void time_tToFileTime(const time_t& src, DWORD& destHigh, DWORD& destLow) {
|
|
97
|
+
ULONGLONG ll = Int32x32To64(src, 10000000) + 116444736000000000ULL;
|
|
98
|
+
ULongLongToLowHigh(ll, destLow, destHigh);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
inline void FileTimeTotime_t(time_t& dest, const unsigned int& srcHigh, const unsigned int& srcLow) {
|
|
102
|
+
ULONGLONG ll = ULowHighToLongLong(srcLow, srcHigh);
|
|
103
|
+
dest = static_cast<time_t>(MyInt64Div32(ll - 116444736000000000ll, 10000000));
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
inline tm FileTimeToTm(const FILETIME& ftime) {
|
|
108
|
+
tm dest;
|
|
109
|
+
SYSTEMTIME time;
|
|
110
|
+
if (!::FileTimeToSystemTime(&ftime, &time))
|
|
111
|
+
throw;
|
|
112
|
+
dest.tm_year = time.wYear - 1900;
|
|
113
|
+
dest.tm_mon = time.wMonth - 1;
|
|
114
|
+
dest.tm_mday = time.wDay;
|
|
115
|
+
dest.tm_wday = time.wDayOfWeek;
|
|
116
|
+
dest.tm_hour = time.wHour;
|
|
117
|
+
dest.tm_min = time.wMinute;
|
|
118
|
+
dest.tm_sec = time.wSecond;
|
|
119
|
+
dest.tm_yday = 0;
|
|
120
|
+
dest.tm_isdst = 0;
|
|
121
|
+
return dest;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
class CPLIB_CLASS CDateTime;
|
|
125
|
+
|
|
114
126
|
/**
|
|
115
|
-
* \
|
|
127
|
+
* \class CDateTimeSpan DateTime.h <cplib/DateTime.h>
|
|
128
|
+
* \brief Период времени.
|
|
116
129
|
*
|
|
117
|
-
*
|
|
118
|
-
* \param microseconds [in] - ���������� ����������� � ������� �������
|
|
119
|
-
*/
|
|
120
|
-
explicit CDateTimeSpan( unsigned seconds, unsigned microseconds = 0);
|
|
121
|
-
/**
|
|
122
|
-
* \brief ������� ����� ��������� �������.
|
|
130
|
+
* Класс хранит период времени с точностью до миксросекунды.
|
|
123
131
|
*
|
|
124
|
-
* \
|
|
132
|
+
* \sa CDateTime
|
|
125
133
|
*/
|
|
126
|
-
|
|
134
|
+
class CPLIB_CLASS
|
|
135
|
+
CDateTimeSpan
|
|
136
|
+
{
|
|
137
|
+
public:
|
|
138
|
+
/// Создает пустой объект
|
|
139
|
+
explicit CDateTimeSpan();
|
|
140
|
+
/**
|
|
141
|
+
* \brief Создает и инициализирует объект
|
|
142
|
+
*
|
|
143
|
+
* \param alya_generalizedTime [in] строковое представление периода времени
|
|
144
|
+
* \remarks Формат строкового представления следующий: "YYYYMMDDhhmmss.ddddddZ"
|
|
145
|
+
* где YYYY - годы, MM - месяцы, DD - дни, hh - часы, mm - минуты, ss - секудны,
|
|
146
|
+
* dddddd - доли секунды (до 6-ти знаков, могут отсутствовать вместе с разделительной
|
|
147
|
+
* точкой. Примеры: "00050600114530Z", "00000000000023.123Z", "00000000000003.123456Z"
|
|
148
|
+
*/
|
|
149
|
+
explicit CDateTimeSpan(const char* alya_generalizedTime);
|
|
150
|
+
/**
|
|
151
|
+
* \brief Создает и инициализирует объект
|
|
152
|
+
*
|
|
153
|
+
* \param seconds [in] - количество секунд в периоде времени
|
|
154
|
+
* \param microseconds [in] - количество микросекунд в периоде времени
|
|
155
|
+
*/
|
|
156
|
+
explicit CDateTimeSpan(unsigned seconds, unsigned microseconds = 0);
|
|
157
|
+
/**
|
|
158
|
+
* \brief Создает копию заданного объекта.
|
|
159
|
+
*
|
|
160
|
+
* \param src [in] объект, копия которого создается
|
|
161
|
+
*/
|
|
162
|
+
CDateTimeSpan(const CDateTimeSpan& src);
|
|
127
163
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
164
|
+
/**
|
|
165
|
+
* \brief Возвращает период времени в строковом формате (ANSI)
|
|
166
|
+
* \sa getGeneralizedTime(), towstring(), CDateTimeSpan()
|
|
167
|
+
*/
|
|
168
|
+
CStringProxy tostring() const;
|
|
169
|
+
/**
|
|
170
|
+
* \brief Возвращает период времени в строковом формате (Unicode)
|
|
171
|
+
* \sa getGeneralizedTime(), tostring(), CDateTimeSpan()
|
|
172
|
+
*/
|
|
173
|
+
CWStringProxy towstring() const;
|
|
174
|
+
/**
|
|
175
|
+
* \brief Возвращает период времени в строковом формате (ANSI)
|
|
176
|
+
* \sa tostring(), towstring(), CDateTimeSpan()
|
|
177
|
+
*/
|
|
178
|
+
CStringProxy getGeneralizedTime() const;
|
|
143
179
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
180
|
+
/**
|
|
181
|
+
* \brief Возвращает младшую часть внутренней переменной
|
|
182
|
+
*/
|
|
183
|
+
DWORD getLowPart();
|
|
148
184
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
185
|
+
/**
|
|
186
|
+
* \brief Возвращает старшую часть внутренней переменной
|
|
187
|
+
*/
|
|
188
|
+
DWORD getHighPart();
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* \brief Создает копию заданного объекта.
|
|
192
|
+
*
|
|
193
|
+
* \param src [in] объект, копия которого создается
|
|
194
|
+
*/
|
|
195
|
+
CDateTimeSpan& operator=(const CDateTimeSpan& src);
|
|
196
|
+
/**
|
|
197
|
+
* \brief Операция обмена объектов.
|
|
198
|
+
*
|
|
199
|
+
* \param src [in] объект для обмена
|
|
200
|
+
* \remarks Функция не генерирует исключений.
|
|
201
|
+
*/
|
|
202
|
+
void swap(CDateTimeSpan& src) throw();
|
|
203
|
+
|
|
204
|
+
CPLIB_API friend bool operator==(const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
205
|
+
CPLIB_API friend bool operator!=(const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
206
|
+
CPLIB_API friend bool operator<=(const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
207
|
+
CPLIB_API friend bool operator>=(const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
208
|
+
CPLIB_API friend bool operator<(const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
209
|
+
CPLIB_API friend bool operator>(const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
210
|
+
CPLIB_API friend CDateTime& operator +=(CDateTime& lhs, const CDateTimeSpan& rhs);
|
|
211
|
+
CPLIB_API friend CDateTime& operator -=(CDateTime& lhs, const CDateTimeSpan& rhs);
|
|
212
|
+
CPLIB_API friend CDateTimeSpan& operator +=(CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
213
|
+
CPLIB_API friend CDateTimeSpan& operator -=(CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
214
|
+
CPLIB_API friend CDateTimeSpan operator -(const CDateTime& lhs, const CDateTime& rhs);
|
|
215
|
+
|
|
216
|
+
CPLIB_API friend CDateTimeSpan& operator *=(CDateTimeSpan& lhs, unsigned rhs);
|
|
217
|
+
CPLIB_API friend CDateTimeSpan& operator /=(CDateTimeSpan& lhs, unsigned rhs);
|
|
218
|
+
CPLIB_API friend CDateTimeSpan& operator %=(CDateTimeSpan& lhs, unsigned rhs);
|
|
219
|
+
|
|
220
|
+
CPLIB_API friend CDateTimeSpan operator *(const CDateTimeSpan& lhs, unsigned rhs);
|
|
221
|
+
CPLIB_API friend CDateTimeSpan operator /(const CDateTimeSpan& lhs, unsigned rhs);
|
|
222
|
+
CPLIB_API friend CDateTimeSpan operator %(const CDateTimeSpan& lhs, unsigned rhs);
|
|
223
|
+
|
|
224
|
+
CPLIB_API friend unsigned operator / (const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
225
|
+
CPLIB_API friend CDateTimeSpan operator % (const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
226
|
+
|
|
227
|
+
static const CDateTimeSpan& OneYear();
|
|
228
|
+
static const CDateTimeSpan& OneMonth();
|
|
229
|
+
static const CDateTimeSpan& OneDay();
|
|
230
|
+
static const CDateTimeSpan& OneHour();
|
|
231
|
+
static const CDateTimeSpan& OneMinute();
|
|
232
|
+
static const CDateTimeSpan& OneSecond();
|
|
233
|
+
static const CDateTimeSpan& OneMillisecond();
|
|
234
|
+
|
|
235
|
+
private:
|
|
236
|
+
/// Период один год (365 дней)
|
|
237
|
+
static const CDateTimeSpan oneYear;
|
|
238
|
+
/// Период один месяц (30 дней)
|
|
239
|
+
static const CDateTimeSpan oneMonth;
|
|
240
|
+
/// Период один день
|
|
241
|
+
static const CDateTimeSpan oneDay;
|
|
242
|
+
/// Период один час
|
|
243
|
+
static const CDateTimeSpan oneHour;
|
|
244
|
+
/// Период одна минута
|
|
245
|
+
static const CDateTimeSpan oneMinute;
|
|
246
|
+
/// Период одна секунда
|
|
247
|
+
static const CDateTimeSpan oneSecond;
|
|
248
|
+
/// Период одна миллисекунда
|
|
249
|
+
static const CDateTimeSpan oneMillisecond;
|
|
250
|
+
|
|
251
|
+
DWORD high_;
|
|
252
|
+
DWORD low_;
|
|
253
|
+
};
|
|
153
254
|
|
|
154
255
|
/**
|
|
155
|
-
* \
|
|
156
|
-
*
|
|
157
|
-
* \param src [in] ������, ����� �������� ���������
|
|
158
|
-
*/
|
|
159
|
-
CDateTimeSpan& operator=( const CDateTimeSpan& src);
|
|
160
|
-
/**
|
|
161
|
-
* \brief �������� ������ ��������.
|
|
256
|
+
* \class CDateTime DateTime.h <cplib/DateTime.h>
|
|
257
|
+
* \brief Время.
|
|
162
258
|
*
|
|
163
|
-
*
|
|
164
|
-
* \remarks ������� �� ���������� ����������.
|
|
165
|
-
*/
|
|
166
|
-
void swap( CDateTimeSpan &src ) throw();
|
|
167
|
-
|
|
168
|
-
CPLIB_API friend bool operator==( const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
169
|
-
CPLIB_API friend bool operator!=( const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
170
|
-
CPLIB_API friend bool operator<=( const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
171
|
-
CPLIB_API friend bool operator>=( const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
172
|
-
CPLIB_API friend bool operator<( const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
173
|
-
CPLIB_API friend bool operator>( const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
174
|
-
CPLIB_API friend CDateTime& operator +=( CDateTime &lhs, const CDateTimeSpan& rhs);
|
|
175
|
-
CPLIB_API friend CDateTime& operator -=( CDateTime &lhs, const CDateTimeSpan& rhs);
|
|
176
|
-
CPLIB_API friend CDateTimeSpan& operator +=( CDateTimeSpan &lhs, const CDateTimeSpan& rhs);
|
|
177
|
-
CPLIB_API friend CDateTimeSpan& operator -=( CDateTimeSpan &lhs, const CDateTimeSpan& rhs);
|
|
178
|
-
CPLIB_API friend CDateTimeSpan operator -( const CDateTime &lhs, const CDateTime &rhs);
|
|
179
|
-
|
|
180
|
-
CPLIB_API friend CDateTimeSpan& operator *=( CDateTimeSpan &lhs, unsigned rhs);
|
|
181
|
-
CPLIB_API friend CDateTimeSpan& operator /=( CDateTimeSpan &lhs, unsigned rhs);
|
|
182
|
-
CPLIB_API friend CDateTimeSpan& operator %=( CDateTimeSpan &lhs, unsigned rhs);
|
|
183
|
-
|
|
184
|
-
CPLIB_API friend CDateTimeSpan operator *( const CDateTimeSpan &lhs, unsigned rhs);
|
|
185
|
-
CPLIB_API friend CDateTimeSpan operator /( const CDateTimeSpan &lhs, unsigned rhs);
|
|
186
|
-
CPLIB_API friend CDateTimeSpan operator %( const CDateTimeSpan &lhs, unsigned rhs);
|
|
187
|
-
|
|
188
|
-
CPLIB_API friend unsigned operator / (const CDateTimeSpan &lhs, const CDateTimeSpan &rhs);
|
|
189
|
-
CPLIB_API friend CDateTimeSpan operator % ( const CDateTimeSpan &lhs, const CDateTimeSpan &rhs );
|
|
190
|
-
|
|
191
|
-
static const CDateTimeSpan& OneYear();
|
|
192
|
-
static const CDateTimeSpan& OneMonth();
|
|
193
|
-
static const CDateTimeSpan& OneDay();
|
|
194
|
-
static const CDateTimeSpan& OneHour();
|
|
195
|
-
static const CDateTimeSpan& OneMinute();
|
|
196
|
-
static const CDateTimeSpan& OneSecond();
|
|
197
|
-
static const CDateTimeSpan& OneMillisecond();
|
|
198
|
-
|
|
199
|
-
private:
|
|
200
|
-
/// ������ ���� ��� (365 ����)
|
|
201
|
-
static const CDateTimeSpan oneYear;
|
|
202
|
-
/// ������ ���� ����� (30 ����)
|
|
203
|
-
static const CDateTimeSpan oneMonth;
|
|
204
|
-
/// ������ ���� ����
|
|
205
|
-
static const CDateTimeSpan oneDay;
|
|
206
|
-
/// ������ ���� ���
|
|
207
|
-
static const CDateTimeSpan oneHour;
|
|
208
|
-
/// ������ ���� ������
|
|
209
|
-
static const CDateTimeSpan oneMinute;
|
|
210
|
-
/// ������ ���� �������
|
|
211
|
-
static const CDateTimeSpan oneSecond;
|
|
212
|
-
/// ������ ���� ������������
|
|
213
|
-
static const CDateTimeSpan oneMillisecond;
|
|
214
|
-
|
|
215
|
-
DWORD high_;
|
|
216
|
-
DWORD low_;
|
|
217
|
-
};
|
|
218
|
-
|
|
219
|
-
/**
|
|
220
|
-
* \class CDateTime DateTime.h <cplib/DateTime.h>
|
|
221
|
-
* \brief �����.
|
|
222
|
-
*
|
|
223
|
-
* ����� ������ �������� ������� � ��������� �� �������������.
|
|
224
|
-
*
|
|
225
|
-
* \sa CDateTimeSpan
|
|
226
|
-
*/
|
|
227
|
-
class CPLIB_CLASS
|
|
228
|
-
CDateTime
|
|
229
|
-
{
|
|
230
|
-
public:
|
|
231
|
-
/**
|
|
232
|
-
* \brief ������� � �������������� ������
|
|
259
|
+
* Класс хранит значение времени с точностью до миксросекунды.
|
|
233
260
|
*
|
|
234
|
-
* \
|
|
235
|
-
* \param micro [in] - ���������� �����������
|
|
261
|
+
* \sa CDateTimeSpan
|
|
236
262
|
*/
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
263
|
+
class CPLIB_CLASS
|
|
264
|
+
CDateTime
|
|
265
|
+
{
|
|
266
|
+
public:
|
|
267
|
+
/**
|
|
268
|
+
* \brief Создает и инициализирует объект
|
|
269
|
+
*
|
|
270
|
+
* \param time [in] - время в формате __time64_t
|
|
271
|
+
* \param micro [in] - количество микросекунд
|
|
272
|
+
*/
|
|
273
|
+
explicit CDateTime(long long time = 0, unsigned int micro = 0);
|
|
274
|
+
/**
|
|
275
|
+
* \brief Создает и инициализирует объект
|
|
276
|
+
*
|
|
277
|
+
* \param generalizedTime [in] строковое представление периода времени
|
|
278
|
+
* \remarks Формат строкового представления следующий: "YYYYMMDDhhmmss.ddddddZ"
|
|
279
|
+
* где YYYY - годы, MM - месяцы, DD - дни, hh - часы, mm - минуты, ss - секудны,
|
|
280
|
+
* dddddd - доли секунды (до 6-ти знаков, могут отсутствовать вместе с разделительной
|
|
281
|
+
* точкой. Примеры: "20041105114530Z", "19940821101532.123Z", "19940821101532.123456Z"
|
|
282
|
+
*/
|
|
283
|
+
explicit CDateTime(const char* generalizedTime);
|
|
284
|
+
/**
|
|
285
|
+
* \brief Создает и инициализирует объект
|
|
240
286
|
*
|
|
241
|
-
* \param
|
|
242
|
-
* \
|
|
243
|
-
* ��� YYYY - ����, MM - ������, DD - ���, hh - ����, mm - ������, ss - �������,
|
|
244
|
-
* dddddd - ���� ������� (�� 6-�� ������, ����� ������������� ������ � ��������������
|
|
245
|
-
* ������. �������: "20041105114530Z", "19940821101532.123Z", "19940821101532.123456Z"
|
|
287
|
+
* \param time [in] - время в формате __time32_t
|
|
288
|
+
* \param micro [in] - количество микросекунд
|
|
246
289
|
*/
|
|
247
|
-
|
|
290
|
+
CDateTime(long time, unsigned int micro);
|
|
248
291
|
/**
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
292
|
+
* \brief Создает и инициализирует объект
|
|
293
|
+
*
|
|
294
|
+
* \param filetime [in] время в формате FILETIME
|
|
295
|
+
*/
|
|
296
|
+
CDateTime(FILETIME filetime);
|
|
297
|
+
/**
|
|
298
|
+
* \brief Создает и инициализирует объект
|
|
299
|
+
*
|
|
300
|
+
* \param systemtime [in] время в формате SYSTEMTIME
|
|
301
|
+
*/
|
|
302
|
+
CDateTime(SYSTEMTIME systemtime);
|
|
303
|
+
/**
|
|
304
|
+
* \brief Создает и инициализирует объект
|
|
305
|
+
*
|
|
306
|
+
* \param year [in] год
|
|
307
|
+
* \param month [in] месяц
|
|
308
|
+
* \param day [in] день
|
|
309
|
+
* \param hour [in] час
|
|
310
|
+
* \param minute [in] минуты
|
|
311
|
+
* \param second [in] секунды
|
|
312
|
+
* \param milli [in] миллисекунды
|
|
313
|
+
* \param micro [in] микросекунды
|
|
314
|
+
*/
|
|
315
|
+
CDateTime(
|
|
316
|
+
unsigned int year,
|
|
317
|
+
unsigned int month,
|
|
318
|
+
unsigned int day,
|
|
319
|
+
unsigned int hour = 0,
|
|
320
|
+
unsigned int minute = 0,
|
|
321
|
+
unsigned int second = 0,
|
|
322
|
+
unsigned int milli = 0,
|
|
323
|
+
unsigned int micro = 0);
|
|
324
|
+
/**
|
|
325
|
+
* \brief Создает копию заданного объекта.
|
|
326
|
+
*
|
|
327
|
+
* \param time [in] объект, копия которого создается
|
|
328
|
+
*/
|
|
329
|
+
CDateTime(const CDateTime& time);
|
|
330
|
+
/**
|
|
331
|
+
* \brief Создает копию заданного объекта.
|
|
332
|
+
*
|
|
333
|
+
* \param src [in] объект, копия которого создается
|
|
334
|
+
*/
|
|
335
|
+
CDateTime& operator=(const CDateTime& src);
|
|
336
|
+
/**
|
|
337
|
+
* \brief Операция обмена объектов.
|
|
338
|
+
*
|
|
339
|
+
* \param src [in] объект для обмена
|
|
340
|
+
* \remarks Функция не генерирует исключений.
|
|
341
|
+
*/
|
|
342
|
+
void swap(CDateTime& src) throw();
|
|
343
|
+
|
|
344
|
+
/// Возвращает год
|
|
345
|
+
unsigned int year() const;
|
|
346
|
+
/// Возвращает месяц
|
|
347
|
+
unsigned int month() const;
|
|
348
|
+
/// Возвращает день
|
|
349
|
+
unsigned int day() const;
|
|
350
|
+
/// Возвращает час
|
|
351
|
+
unsigned int hour() const;
|
|
352
|
+
/// Возвращает минуту
|
|
353
|
+
unsigned int minute() const;
|
|
354
|
+
/// Возвращает секунды
|
|
355
|
+
unsigned int second() const;
|
|
356
|
+
/// Возвращает миллисекунды
|
|
357
|
+
unsigned int millisecond() const;
|
|
358
|
+
/// Возвращает микросекунды
|
|
359
|
+
unsigned int microsecond() const;
|
|
360
|
+
|
|
361
|
+
/**
|
|
362
|
+
* \brief Возвращает время в строковом формате (ANSI)
|
|
363
|
+
* \sa getTime(), getFileTime(), getSystemTime(), tostring(), towstring(), CDateTimeSpan
|
|
364
|
+
*/
|
|
365
|
+
CStringProxy getGeneralizedTime() const;
|
|
366
|
+
CStringProxy getGeneralizedTimeTrimMicroseconds() const;
|
|
367
|
+
/**
|
|
368
|
+
* \brief Возвращает время в формате time_t
|
|
369
|
+
* \sa getGeneralizedTime(), getFileTime(), getSystemTime(), tostring(), towstring(), CDateTimeSpan
|
|
370
|
+
*/
|
|
371
|
+
time_t getTime() const;
|
|
372
|
+
/**
|
|
373
|
+
* \brief Возвращает время в формате FILETIME
|
|
374
|
+
* \sa getGeneralizedTime(), getTime(), getSystemTime(), tostring(), towstring(), CDateTimeSpan
|
|
375
|
+
*/
|
|
376
|
+
FILETIME getFileTime() const;
|
|
377
|
+
/**
|
|
378
|
+
* \brief Возвращает время в формате SYSTEMTIME
|
|
379
|
+
* \sa getGeneralizedTime(), getTime(), getFileTime(), tostring(), towstring(), CDateTimeSpan
|
|
380
|
+
*/
|
|
381
|
+
SYSTEMTIME getSystemTime() const;
|
|
382
|
+
/**
|
|
383
|
+
* \brief Возвращает время в локализованном строковом формате (ANSI)
|
|
384
|
+
* \sa getGeneralizedTime(), getTime(), getFileTime(), getSystemTime(), towstring(), CDateTimeSpan
|
|
385
|
+
*/
|
|
386
|
+
CStringProxy tostring() const;
|
|
387
|
+
/**
|
|
388
|
+
* \brief Возвращает время в локализованном строковом формате (Unicode)
|
|
389
|
+
* \sa getGeneralizedTime(), getTime(), getFileTime(), getSystemTime(), tostring(), CDateTimeSpan
|
|
390
|
+
*/
|
|
391
|
+
CWStringProxy towstring() const;
|
|
392
|
+
/**
|
|
393
|
+
* \brief Возвращает время, преобразованное к локальному представлению
|
|
394
|
+
* \sa localToUtc()
|
|
395
|
+
*/
|
|
396
|
+
CDateTime utcToLocal() const;
|
|
397
|
+
/**
|
|
398
|
+
* \brief Возвращает время, преобразованное к представлению в системе универсального координированного времени (UTC)
|
|
399
|
+
* \sa utcToLocal()
|
|
400
|
+
*/
|
|
401
|
+
CDateTime localToUtc() const;
|
|
402
|
+
|
|
403
|
+
/// Возвращает объект с текущим значение времени с точностью до микросекунд в системе универсального координированного времени (UTC)
|
|
404
|
+
static CDateTime Now();
|
|
405
|
+
|
|
406
|
+
/// Возвращает объект с текущим значение времени с точностью до микросекунд в системе универсального координированного времени (UTC)
|
|
407
|
+
static CDateTime GetCurrentTime() { return Now(); }
|
|
408
|
+
|
|
409
|
+
CPLIB_API friend bool operator==(const CDateTime& lhs, const CDateTime& rhs);
|
|
410
|
+
CPLIB_API friend bool operator!=(const CDateTime& lhs, const CDateTime& rhs);
|
|
411
|
+
CPLIB_API friend bool operator<=(const CDateTime& lhs, const CDateTime& rhs);
|
|
412
|
+
CPLIB_API friend bool operator>=(const CDateTime& lhs, const CDateTime& rhs);
|
|
413
|
+
CPLIB_API friend bool operator<(const CDateTime& lhs, const CDateTime& rhs);
|
|
414
|
+
CPLIB_API friend bool operator>(const CDateTime& lhs, const CDateTime& rhs);
|
|
415
|
+
CPLIB_API friend CDateTime& operator +=(CDateTime& lhs, const CDateTimeSpan& rhs);
|
|
416
|
+
CPLIB_API friend CDateTime& operator -=(CDateTime& lhs, const CDateTimeSpan& rhs);
|
|
417
|
+
CPLIB_API friend CDateTimeSpan operator -(const CDateTime& lhs, const CDateTime& rhs);
|
|
418
|
+
|
|
419
|
+
#ifdef UNIX
|
|
420
|
+
CDateTime(timeval tval);
|
|
421
|
+
timeval getTimeval() const;
|
|
422
|
+
#endif // UNIX
|
|
423
|
+
private:
|
|
424
|
+
DWORD high_;
|
|
425
|
+
DWORD low_;
|
|
426
|
+
};
|
|
427
|
+
|
|
428
|
+
/// Операция проверки на равенство
|
|
429
|
+
CPLIB_API bool operator==(const CDateTime& lhs, const CDateTime& rhs);
|
|
430
|
+
/// Операция проверки на неравенство
|
|
431
|
+
CPLIB_API bool operator!=(const CDateTime& lhs, const CDateTime& rhs);
|
|
432
|
+
/// Операция сравнения (меньше или равно)
|
|
433
|
+
CPLIB_API bool operator<=(const CDateTime& lhs, const CDateTime& rhs);
|
|
434
|
+
/// Операция сравнения (больше или равно)
|
|
435
|
+
CPLIB_API bool operator>=(const CDateTime& lhs, const CDateTime& rhs);
|
|
436
|
+
/// Операция сравнения (меньше)
|
|
437
|
+
CPLIB_API bool operator<(const CDateTime& lhs, const CDateTime& rhs);
|
|
438
|
+
/// Операция сравнения (больше)
|
|
439
|
+
CPLIB_API bool operator>(const CDateTime& lhs, const CDateTime& rhs);
|
|
440
|
+
|
|
441
|
+
/// Операция проверки на равенство
|
|
442
|
+
CPLIB_API bool operator==(const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
443
|
+
/// Операция проверки на неравенство
|
|
444
|
+
CPLIB_API bool operator!=(const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
445
|
+
/// Операция сравнения (меньше или равно)
|
|
446
|
+
CPLIB_API bool operator<=(const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
447
|
+
/// Операция сравнения (больше или равно)
|
|
448
|
+
CPLIB_API bool operator>=(const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
449
|
+
/// Операция сравнения (меньше)
|
|
450
|
+
CPLIB_API bool operator<(const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
451
|
+
/// Операция сравнения (больше)
|
|
452
|
+
CPLIB_API bool operator>(const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
453
|
+
/// Операция прибавления периода ко времени
|
|
454
|
+
CPLIB_API CDateTime& operator +=(CDateTime& lhs, const CDateTimeSpan& rhs);
|
|
455
|
+
/// Операция вычитания периода из времени
|
|
456
|
+
CPLIB_API CDateTime& operator -=(CDateTime& lhs, const CDateTimeSpan& rhs);
|
|
457
|
+
|
|
458
|
+
/// Операция прибавления периода к периоду
|
|
459
|
+
CPLIB_API CDateTimeSpan& operator +=(CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
460
|
+
/**
|
|
461
|
+
* \brief Операция вычитания периода из периода
|
|
462
|
+
* \remark Период времени не может буть отрицательным. Если в результате
|
|
463
|
+
* вычитания получается отрицательный период, генерируется исключение.
|
|
253
464
|
*/
|
|
254
|
-
|
|
465
|
+
CPLIB_API CDateTimeSpan& operator -=(CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
466
|
+
|
|
467
|
+
/// Операция умножения периода на число
|
|
468
|
+
CPLIB_API CDateTimeSpan& operator *=(CDateTimeSpan& lhs, unsigned rhs);
|
|
469
|
+
/// Операция деления периода на число
|
|
470
|
+
CPLIB_API CDateTimeSpan& operator /=(CDateTimeSpan& lhs, unsigned rhs);
|
|
471
|
+
/// Операция получения остатка от деления периода на число
|
|
472
|
+
CPLIB_API CDateTimeSpan& operator %=(CDateTimeSpan& lhs, unsigned rhs);
|
|
473
|
+
|
|
474
|
+
/// Операция умножения периода на число
|
|
475
|
+
CPLIB_API CDateTimeSpan operator *(const CDateTimeSpan& lhs, unsigned rhs);
|
|
476
|
+
/// Операция деления периода на число
|
|
477
|
+
CPLIB_API CDateTimeSpan operator /(const CDateTimeSpan& lhs, unsigned rhs);
|
|
478
|
+
/// Операция получения остатка от деления периода на число
|
|
479
|
+
CPLIB_API CDateTimeSpan operator %(const CDateTimeSpan& lhs, unsigned rhs);
|
|
480
|
+
|
|
481
|
+
/// Операция деления периода на период
|
|
482
|
+
CPLIB_API unsigned operator / (const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
483
|
+
/// Операция получения остатка от деления периода на период
|
|
484
|
+
CPLIB_API CDateTimeSpan operator % (const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
485
|
+
|
|
255
486
|
/**
|
|
256
|
-
* \brief
|
|
257
|
-
*
|
|
258
|
-
*
|
|
487
|
+
* \brief Операция вычитания периода из периода
|
|
488
|
+
* \remark Период времени не может буть отрицательным. Если в результате
|
|
489
|
+
* вычитания получается отрицательный период, генерируется исключение.
|
|
259
490
|
*/
|
|
260
|
-
|
|
491
|
+
CPLIB_API CDateTimeSpan operator -(const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
261
492
|
/**
|
|
262
|
-
* \brief
|
|
263
|
-
*
|
|
264
|
-
*
|
|
493
|
+
* \brief Операция вычитания времени из времени
|
|
494
|
+
* \remark Период времени не может буть отрицательным. При вычитании
|
|
495
|
+
* более позднего момента времени из более раннего генерируется исключение
|
|
265
496
|
*/
|
|
266
|
-
|
|
497
|
+
CPLIB_API CDateTimeSpan operator -(const CDateTime& lhs, const CDateTime& rhs);
|
|
498
|
+
/// Операция вычитания периода из даты
|
|
499
|
+
CPLIB_API CDateTime operator -(const CDateTime& lhs, const CDateTimeSpan& rhs);
|
|
500
|
+
|
|
501
|
+
/// Операция прибавления периода к периоду
|
|
502
|
+
CPLIB_API CDateTimeSpan operator +(const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
503
|
+
/// Операция прибавления периода ко времени
|
|
504
|
+
CPLIB_API CDateTime operator +(const CDateTime& lhs, const CDateTimeSpan& rhs);
|
|
505
|
+
|
|
267
506
|
/**
|
|
268
|
-
* \brief
|
|
507
|
+
* \brief Функция прибавления к дате заданного отрезка времени
|
|
508
|
+
*
|
|
509
|
+
* \param intervalUnit [in] единицы измерения в которых задаётся интервал, значение
|
|
510
|
+
* параметра может быть равным:
|
|
511
|
+
* - "s" - секунды;
|
|
512
|
+
* - "n" - минуты;
|
|
513
|
+
* - "h" - часы;
|
|
514
|
+
* - "d" - дни;
|
|
515
|
+
* - "w" - недели;
|
|
516
|
+
* - "m" - месяцы;
|
|
517
|
+
* - "y" - годы.
|
|
518
|
+
* \param interval [in] размер прибавляемого интервала
|
|
519
|
+
* \param value [in] дата, к которой прибавляется интервал
|
|
269
520
|
*
|
|
270
|
-
* \
|
|
271
|
-
* \param month [in] �����
|
|
272
|
-
* \param day [in] ����
|
|
273
|
-
* \param hour [in] ���
|
|
274
|
-
* \param minute [in] ������
|
|
275
|
-
* \param second [in] �������
|
|
276
|
-
* \param milli [in] ������������
|
|
277
|
-
* \param micro [in] ������������
|
|
521
|
+
* \return Новое значение даты.
|
|
278
522
|
*/
|
|
279
|
-
CDateTime(
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
unsigned int day,
|
|
283
|
-
unsigned int hour = 0,
|
|
284
|
-
unsigned int minute = 0,
|
|
285
|
-
unsigned int second = 0,
|
|
286
|
-
unsigned int milli = 0,
|
|
287
|
-
unsigned int micro = 0);
|
|
523
|
+
CPLIB_API CDateTime DateAddA(const char* intervalUnit,
|
|
524
|
+
int interval, const CDateTime& value);
|
|
525
|
+
|
|
288
526
|
/**
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
527
|
+
* \brief Функция прибавления к дате заданного отрезка времени
|
|
528
|
+
*
|
|
529
|
+
* \param intervalUnit [in] единицы измерения в которых задаётся интервал, значение
|
|
530
|
+
* параметра может быть равным:
|
|
531
|
+
* - "s" - секунды;
|
|
532
|
+
* - "n" - минуты;
|
|
533
|
+
* - "h" - часы;
|
|
534
|
+
* - "d" - дни;
|
|
535
|
+
* - "w" - недели;
|
|
536
|
+
* - "m" - месяцы;
|
|
537
|
+
* - "y" - годы.
|
|
538
|
+
* \param interval [in] размер прибавляемого интервала
|
|
539
|
+
* \param value [in] дата, к которой прибавляется интервал
|
|
540
|
+
*
|
|
541
|
+
* \return Новое значение даты.
|
|
542
|
+
*/
|
|
543
|
+
CPLIB_API CDateTime DateAddW(const wchar_t* intervalUnit,
|
|
544
|
+
int interval, const CDateTime& value);
|
|
545
|
+
|
|
294
546
|
/**
|
|
295
|
-
* \brief
|
|
547
|
+
* \brief Функция возвращает объект со временем (UTC), извлеченным из строки, представленной в формате xsd:dateTime.
|
|
296
548
|
*
|
|
297
|
-
* \param
|
|
549
|
+
* \param lexicalDateTime [in] строка в формате xsd:dateTime
|
|
550
|
+
* \sa toXsdDateTimeString()
|
|
298
551
|
*/
|
|
299
|
-
CDateTime
|
|
552
|
+
CPLIB_API CDateTime fromXsdDateTimeString(const char* lexicalDateTime);
|
|
300
553
|
/**
|
|
301
|
-
* \brief
|
|
554
|
+
* \brief Функция возвращает строку в формате xsd:dateTime со значением переданного времени с точностью до миллисекунд в системе универсального координированного времени (UTC) или пустую строку в случае ошибки.
|
|
302
555
|
*
|
|
303
|
-
* \param
|
|
304
|
-
* \
|
|
305
|
-
*/
|
|
306
|
-
void swap( CDateTime &src ) throw();
|
|
307
|
-
|
|
308
|
-
/// ���������� ���
|
|
309
|
-
unsigned int year() const;
|
|
310
|
-
/// ���������� �����
|
|
311
|
-
unsigned int month() const;
|
|
312
|
-
/// ���������� ����
|
|
313
|
-
unsigned int day() const;
|
|
314
|
-
/// ���������� ���
|
|
315
|
-
unsigned int hour() const;
|
|
316
|
-
/// ���������� ������
|
|
317
|
-
unsigned int minute() const;
|
|
318
|
-
/// ���������� �������
|
|
319
|
-
unsigned int second() const;
|
|
320
|
-
/// ���������� ������������
|
|
321
|
-
unsigned int millisecond() const;
|
|
322
|
-
/// ���������� ������������
|
|
323
|
-
unsigned int microsecond() const;
|
|
324
|
-
|
|
325
|
-
/**
|
|
326
|
-
* \brief ���������� ����� � ��������� ������� (ANSI)
|
|
327
|
-
* \sa getTime(), getFileTime(), getSystemTime(), tostring(), towstring(), CDateTimeSpan
|
|
328
|
-
*/
|
|
329
|
-
CStringProxy getGeneralizedTime() const;
|
|
330
|
-
CStringProxy getGeneralizedTimeTrimMicroseconds() const;
|
|
331
|
-
/**
|
|
332
|
-
* \brief ���������� ����� � ������� time_t
|
|
333
|
-
* \sa getGeneralizedTime(), getFileTime(), getSystemTime(), tostring(), towstring(), CDateTimeSpan
|
|
334
|
-
*/
|
|
335
|
-
time_t getTime() const;
|
|
336
|
-
/**
|
|
337
|
-
* \brief ���������� ����� � ������� FILETIME
|
|
338
|
-
* \sa getGeneralizedTime(), getTime(), getSystemTime(), tostring(), towstring(), CDateTimeSpan
|
|
339
|
-
*/
|
|
340
|
-
FILETIME getFileTime() const;
|
|
341
|
-
/**
|
|
342
|
-
* \brief ���������� ����� � ������� SYSTEMTIME
|
|
343
|
-
* \sa getGeneralizedTime(), getTime(), getFileTime(), tostring(), towstring(), CDateTimeSpan
|
|
344
|
-
*/
|
|
345
|
-
SYSTEMTIME getSystemTime() const;
|
|
346
|
-
/**
|
|
347
|
-
* \brief ���������� ����� � �������������� ��������� ������� (ANSI)
|
|
348
|
-
* \sa getGeneralizedTime(), getTime(), getFileTime(), getSystemTime(), towstring(), CDateTimeSpan
|
|
349
|
-
*/
|
|
350
|
-
CStringProxy tostring() const;
|
|
351
|
-
/**
|
|
352
|
-
* \brief ���������� ����� � �������������� ��������� ������� (Unicode)
|
|
353
|
-
* \sa getGeneralizedTime(), getTime(), getFileTime(), getSystemTime(), tostring(), CDateTimeSpan
|
|
556
|
+
* \param dateTime [in] время
|
|
557
|
+
* \sa fromXsdDateTimeString()
|
|
354
558
|
*/
|
|
355
|
-
|
|
356
|
-
/**
|
|
357
|
-
* \brief ���������� �����, ��������������� � ���������� �������������
|
|
358
|
-
* \sa localToUtc()
|
|
359
|
-
*/
|
|
360
|
-
CDateTime utcToLocal() const;
|
|
361
|
-
/**
|
|
362
|
-
* \brief ���������� �����, ��������������� � ������������� � ������� �������������� ����������������� ������� (UTC)
|
|
363
|
-
* \sa utcToLocal()
|
|
364
|
-
*/
|
|
365
|
-
CDateTime localToUtc() const;
|
|
366
|
-
|
|
367
|
-
/// ���������� ������ � ������� �������� ������� � ��������� �� ������������ � ������� �������������� ����������������� ������� (UTC)
|
|
368
|
-
static CDateTime Now();
|
|
369
|
-
|
|
370
|
-
/// ���������� ������ � ������� �������� ������� � ��������� �� ������������ � ������� �������������� ����������������� ������� (UTC)
|
|
371
|
-
static CDateTime GetCurrentTime(){return Now();}
|
|
372
|
-
|
|
373
|
-
CPLIB_API friend bool operator==( const CDateTime& lhs, const CDateTime& rhs);
|
|
374
|
-
CPLIB_API friend bool operator!=( const CDateTime& lhs, const CDateTime& rhs);
|
|
375
|
-
CPLIB_API friend bool operator<=( const CDateTime& lhs, const CDateTime& rhs);
|
|
376
|
-
CPLIB_API friend bool operator>=( const CDateTime& lhs, const CDateTime& rhs);
|
|
377
|
-
CPLIB_API friend bool operator<( const CDateTime& lhs, const CDateTime& rhs);
|
|
378
|
-
CPLIB_API friend bool operator>( const CDateTime& lhs, const CDateTime& rhs);
|
|
379
|
-
CPLIB_API friend CDateTime& operator +=( CDateTime &lhs, const CDateTimeSpan& rhs);
|
|
380
|
-
CPLIB_API friend CDateTime& operator -=( CDateTime &lhs, const CDateTimeSpan& rhs);
|
|
381
|
-
CPLIB_API friend CDateTimeSpan operator -( const CDateTime &lhs, const CDateTime &rhs);
|
|
382
|
-
|
|
383
|
-
#ifdef UNIX
|
|
384
|
-
CDateTime( timeval tval);
|
|
385
|
-
timeval getTimeval() const;
|
|
386
|
-
#endif // UNIX
|
|
387
|
-
private:
|
|
388
|
-
DWORD high_;
|
|
389
|
-
DWORD low_;
|
|
390
|
-
};
|
|
391
|
-
|
|
392
|
-
/// �������� �������� �� ���������
|
|
393
|
-
CPLIB_API bool operator==( const CDateTime& lhs, const CDateTime& rhs);
|
|
394
|
-
/// �������� �������� �� �����������
|
|
395
|
-
CPLIB_API bool operator!=( const CDateTime& lhs, const CDateTime& rhs);
|
|
396
|
-
/// �������� ��������� (������ ��� �����)
|
|
397
|
-
CPLIB_API bool operator<=( const CDateTime& lhs, const CDateTime& rhs);
|
|
398
|
-
/// �������� ��������� (������ ��� �����)
|
|
399
|
-
CPLIB_API bool operator>=( const CDateTime& lhs, const CDateTime& rhs);
|
|
400
|
-
/// �������� ��������� (������)
|
|
401
|
-
CPLIB_API bool operator<( const CDateTime& lhs, const CDateTime& rhs);
|
|
402
|
-
/// �������� ��������� (������)
|
|
403
|
-
CPLIB_API bool operator>( const CDateTime& lhs, const CDateTime& rhs);
|
|
404
|
-
|
|
405
|
-
/// �������� �������� �� ���������
|
|
406
|
-
CPLIB_API bool operator==( const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
407
|
-
/// �������� �������� �� �����������
|
|
408
|
-
CPLIB_API bool operator!=( const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
409
|
-
/// �������� ��������� (������ ��� �����)
|
|
410
|
-
CPLIB_API bool operator<=( const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
411
|
-
/// �������� ��������� (������ ��� �����)
|
|
412
|
-
CPLIB_API bool operator>=( const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
413
|
-
/// �������� ��������� (������)
|
|
414
|
-
CPLIB_API bool operator<( const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
415
|
-
/// �������� ��������� (������)
|
|
416
|
-
CPLIB_API bool operator>( const CDateTimeSpan& lhs, const CDateTimeSpan& rhs);
|
|
417
|
-
/// �������� ����������� ������� �� �������
|
|
418
|
-
CPLIB_API CDateTime& operator +=( CDateTime &lhs, const CDateTimeSpan& rhs);
|
|
419
|
-
/// �������� ��������� ������� �� �������
|
|
420
|
-
CPLIB_API CDateTime& operator -=( CDateTime &lhs, const CDateTimeSpan& rhs);
|
|
421
|
-
|
|
422
|
-
/// �������� ����������� ������� � �������
|
|
423
|
-
CPLIB_API CDateTimeSpan& operator +=( CDateTimeSpan &lhs, const CDateTimeSpan& rhs);
|
|
424
|
-
/**
|
|
425
|
-
* \brief �������� ��������� ������� �� �������
|
|
426
|
-
* \remark ������ ������� �� ����� ���� �������������. ���� � ����������
|
|
427
|
-
* ��������� ���������� ������������� ������, ������������ ����������.
|
|
428
|
-
*/
|
|
429
|
-
CPLIB_API CDateTimeSpan& operator -=( CDateTimeSpan &lhs, const CDateTimeSpan& rhs);
|
|
430
|
-
|
|
431
|
-
/// �������� ��������� ������� �� �����
|
|
432
|
-
CPLIB_API CDateTimeSpan& operator *=( CDateTimeSpan &lhs, unsigned rhs);
|
|
433
|
-
/// �������� ������� ������� �� �����
|
|
434
|
-
CPLIB_API CDateTimeSpan& operator /=( CDateTimeSpan &lhs, unsigned rhs);
|
|
435
|
-
/// �������� ��������� ������� �� ������� ������� �� �����
|
|
436
|
-
CPLIB_API CDateTimeSpan& operator %=( CDateTimeSpan &lhs, unsigned rhs);
|
|
437
|
-
|
|
438
|
-
/// �������� ��������� ������� �� �����
|
|
439
|
-
CPLIB_API CDateTimeSpan operator *( const CDateTimeSpan &lhs, unsigned rhs);
|
|
440
|
-
/// �������� ������� ������� �� �����
|
|
441
|
-
CPLIB_API CDateTimeSpan operator /( const CDateTimeSpan &lhs, unsigned rhs);
|
|
442
|
-
/// �������� ��������� ������� �� ������� ������� �� �����
|
|
443
|
-
CPLIB_API CDateTimeSpan operator %( const CDateTimeSpan &lhs, unsigned rhs);
|
|
444
|
-
|
|
445
|
-
/// �������� ������� ������� �� ������
|
|
446
|
-
CPLIB_API unsigned operator / ( const CDateTimeSpan &lhs, const CDateTimeSpan &rhs );
|
|
447
|
-
/// �������� ��������� ������� �� ������� ������� �� ������
|
|
448
|
-
CPLIB_API CDateTimeSpan operator % ( const CDateTimeSpan &lhs, const CDateTimeSpan &rhs );
|
|
449
|
-
|
|
450
|
-
/**
|
|
451
|
-
* \brief �������� ��������� ������� �� �������
|
|
452
|
-
* \remark ������ ������� �� ����� ���� �������������. ���� � ����������
|
|
453
|
-
* ��������� ���������� ������������� ������, ������������ ����������.
|
|
454
|
-
*/
|
|
455
|
-
CPLIB_API CDateTimeSpan operator -( const CDateTimeSpan &lhs, const CDateTimeSpan &rhs);
|
|
456
|
-
/**
|
|
457
|
-
* \brief �������� ��������� ������� �� �������
|
|
458
|
-
* \remark ������ ������� �� ����� ���� �������������. ��� ���������
|
|
459
|
-
* ����� �������� ������� ������� �� ����� ������� ������������ ����������
|
|
460
|
-
*/
|
|
461
|
-
CPLIB_API CDateTimeSpan operator -( const CDateTime &lhs, const CDateTime &rhs);
|
|
462
|
-
/// �������� ��������� ������� �� ����
|
|
463
|
-
CPLIB_API CDateTime operator -( const CDateTime &lhs, const CDateTimeSpan &rhs);
|
|
464
|
-
|
|
465
|
-
/// �������� ����������� ������� � �������
|
|
466
|
-
CPLIB_API CDateTimeSpan operator +( const CDateTimeSpan &lhs, const CDateTimeSpan &rhs);
|
|
467
|
-
/// �������� ����������� ������� �� �������
|
|
468
|
-
CPLIB_API CDateTime operator +( const CDateTime &lhs, const CDateTimeSpan &rhs);
|
|
469
|
-
|
|
470
|
-
/**
|
|
471
|
-
* \brief ������� ����������� � ���� ��������� ������� �������
|
|
472
|
-
*
|
|
473
|
-
* \param intervalUnit [in] ������� ��������� � ������� ������� ��������, ��������
|
|
474
|
-
* ��������� ����� ���� ������:
|
|
475
|
-
* - "s" - �������;
|
|
476
|
-
* - "n" - ������;
|
|
477
|
-
* - "h" - ����;
|
|
478
|
-
* - "d" - ���;
|
|
479
|
-
* - "w" - ������;
|
|
480
|
-
* - "m" - ������;
|
|
481
|
-
* - "y" - ����.
|
|
482
|
-
* \param interval [in] ������ ������������� ���������
|
|
483
|
-
* \param value [in] ����, � ������� ������������ ��������
|
|
484
|
-
*
|
|
485
|
-
* \return ����� �������� ����.
|
|
486
|
-
*/
|
|
487
|
-
CPLIB_API CDateTime DateAddA( const char* intervalUnit,
|
|
488
|
-
int interval, const CDateTime& value);
|
|
489
|
-
|
|
490
|
-
/**
|
|
491
|
-
* \brief ������� ����������� � ���� ��������� ������� �������
|
|
492
|
-
*
|
|
493
|
-
* \param intervalUnit [in] ������� ��������� � ������� ������� ��������, ��������
|
|
494
|
-
* ��������� ����� ���� ������:
|
|
495
|
-
* - "s" - �������;
|
|
496
|
-
* - "n" - ������;
|
|
497
|
-
* - "h" - ����;
|
|
498
|
-
* - "d" - ���;
|
|
499
|
-
* - "w" - ������;
|
|
500
|
-
* - "m" - ������;
|
|
501
|
-
* - "y" - ����.
|
|
502
|
-
* \param interval [in] ������ ������������� ���������
|
|
503
|
-
* \param value [in] ����, � ������� ������������ ��������
|
|
504
|
-
*
|
|
505
|
-
* \return ����� �������� ����.
|
|
506
|
-
*/
|
|
507
|
-
CPLIB_API CDateTime DateAddW( const wchar_t* intervalUnit,
|
|
508
|
-
int interval, const CDateTime& value);
|
|
559
|
+
CPLIB_API CStringProxy toXsdDateTimeString(const CDateTime& dateTime);
|
|
509
560
|
|
|
510
561
|
#ifdef UNICODE
|
|
511
562
|
#define DateAdd DateAddW
|