1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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
|
# Lex Stable Формат за дата и време в C++
## Форматът `Lex Stable` - overview
Форматът **Lex Stable** следва следната структура:
```
YYYY-MM-DD HH:MM:SS
```
- `YYYY`: 4-цифрено число, обозначаващо година (напр. 2025)
- `MM`: 2-цифрено число, обозначаващо месец (01–12)
- `DD`: 2-цифрено число, обозначаващо ден (01–31)
- `HH`: 2-цифрено число, обозначаващо часа във формат 24 часа (00–23)
- `MM`: 2-цифрено число, обозначаващо минутите (00–59)
- `SS`: 2-цифрено число, обозначаващо секундите (00–59)
### Примерен Код
Следният код демонстрира как да форматирате `std::time_t` във формат Lex Stable и да го запазите в `std::string`:
```cpp
#include <iostream>
#include <string>
#include <ctime>
std::string formatTimeAsLexStable(std::time_t time) {
// Конвертирайте std::time_t в структура std::tm (структура, която държи датата и часа във формат, разбит на компоненти - секунди, минути, час, ...)
std::tm* localTime = std::localtime(&time);
// Форматирайте времето като "YYYY-MM-DD HH:MM:SS" и го запазете в string
char buffer[20];
std::snprintf(buffer, sizeof(buffer), "%04d-%02d-%02d %02d:%02d:%02d",
localTime->tm_year + 1900,
localTime->tm_mon + 1,
localTime->tm_mday,
localTime->tm_hour,
localTime->tm_min,
localTime->tm_sec);
return std::string(buffer);
}
int main() {
// Вземете текущото време
std::time_t now = std::time(nullptr);
// Форматирайте текущото време като Lex Stable
std::string formattedTime = formatTimeAsLexStable(now);
// Отпечатайте форматираното време
std::cout << "Текуща дата и време: " << formattedTime << std::endl;
return 0;
}
```
### Обяснение на Кода
1. **`std::time_t` и `std::localtime`**:
- `std::time_t` представлява текущото време като брой секунди от 1 януари 1970 г. (епохата).
- `std::localtime` конвертира това време в структура `std::tm`, която съдържа компоненти като година, месец, ден и др.
2. **`std::snprintf`**:
- Форматира компонентите на времето в стринг с формат Lex Stable.
3. **Гъвкавост**:
- Функцията `formatTimeAsLexStable` може да бъде използвана с всяко време от тип `std::time_t`, не само с текущото.
### Примерен Резултат
Когато стартирате програмата, изходът ще изглежда по следния начин:
```
Текуща дата и време: 2025-01-07 15:45:12
```
## Приложения
- **Логове**: Гарантира, че логовете са подредени хронологично.
- **Организиране на данни**: Използвайте го като ключ за съхранение или извличане на данни.
- **Timestamps**: Добавете Timestamps към събития в приложенията.
|