C:
Отримання поточної дати
Як це зробити:
У мові C заголовочний файл <time.h>
надає необхідні функції та типи для роботи з датами та часом. Функція time()
отримує поточний час, тоді як localtime()
перетворює цей час на локальний часовий пояс. Для відображення дати ми використовуємо strftime()
, щоб відформатувати її як рядок.
Ось базовий приклад:
#include <stdio.h>
#include <time.h>
int main() {
char buffer[80];
time_t rawtime;
struct tm *timeinfo;
// Отримання поточного часу
time(&rawtime);
// Конвертація його в локальний час
timeinfo = localtime(&rawtime);
// Форматування дати та її виведення
strftime(buffer, 80, "Сьогоднішня дата %Y-%m-%d", timeinfo);
printf("%s\n", buffer);
return 0;
}
Приклад виводу може виглядати так:
Сьогоднішня дата 2023-04-12
Поглиблений огляд
Обробка часу в мові C, яка здійснюється за допомогою <time.h>
, веде своє походження з найраніших днів мови і систем UNIX. Вона побудована навколо типу даних time_t
, який представляє поточний час як кількість секунд з часу Unix Epoch (1 січня 1970 року). Хоча це ефективно і універсально сумісно, це також означає, що функції часу стандартної бібліотеки C обмежені діапазоном і роздільною здатністю time_t
.
Сучасні програми, особливо ті, що вимагають високої роздільної здатності часових міток або мають справу з датами далеко в майбутньому чи минулому, можуть виявити ці обмеження викликом. Наприклад, проблема року 2038 є відомою ілюстрацією, де системи, що використовують 32-бітний time_t
, зазнають переповнення.
Для більш складної обробки часу та дати багато програмістів звертаються до зовнішніх бібліотек або функціональностям, наданим операційною системою. Наприклад, у мові C++ бібліотека <chrono>
пропонує більш точні та універсальні можливості маніпулювання часом.
Незважаючи на свої обмеження, простота та повсюдність функцій часу C робить їх цілком придатними для багатьох програм. Розуміння цих інструментів є фундаментальним для програмістів на C, пропонуючи суміш історичного програмного контексту та практичної, повсякденної користі.