Website Summary Files Commits Branches @commit @diff @stats
path: root / Practicum / pract12 / LexStable.md
diff options
context:
space:
mode:
Commit0f0845fe608822b0c97877d5b4ac0d7bc9015bc7 (patch)
Author
 Desislava Shunina <115353472+desiish@users.noreply.github.com>
2025-01-07 18:49:57 +0200
Committer
 GitHub <noreply@github.com>
2025-01-07 18:49:57 +0200
Filesd1ea911d91674e2de5ff12dcc013f57166cfd10f /Practicum/pract12/LexStable.md
Data-structures-and-algorithms-0f0845fe608822b0c97877d5b4ac0d7bc9015bc7.tar
Data-structures-and-algorithms-0f0845fe608822b0c97877d5b4ac0d7bc9015bc7.tar.gz
Data-structures-and-algorithms-0f0845fe608822b0c97877d5b4ac0d7bc9015bc7.zip
Parent19a7c2903e5b00f51cf53ca0b1d89ead44dd5964 (diff)
add LexStable.md
1 files changed, 74 insertions, 0 deletions
-rw-r--r--Practicum/pract12/LexStable.md74
diff --git a/Practicum/pract12/LexStable.md b/Practicum/pract12/LexStable.md
new file mode 100644
index 0000000..8043888
--- /dev/null
+++ b/Practicum/pract12/LexStable.md
@@ -0,0 +1,74 @@
+# Lex Stable Формат за дата и време в C++
+
+## Формата `LexStable` - 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 към събития в приложенията.