Підрозділ 12.Q
Питання для самоконтролю
Питання для самоконтролю — Розділ 12. Робота з датами та часом 12.1. Структура DateTime 1. Що таке DateTime з точки зору системи типів .NET — клас чи структура? Які наслідки це має для присвоєння та порівняння
Питання для самоконтролю — Розділ 12. Робота з датами та часом
12.1. Структура DateTime
Що таке
DateTimeз точки зору системи типів .NET — клас чи структура? Які наслідки це має для присвоєння та порівняння значень?Поясніть, що таке «тік» у внутрішньому представленні
DateTime. Від якої точки відраховуються тіки і яку одиницю часу вони представляють?В чому різниця між
DateTimeKind.Unspecified,DateTimeKind.LocalтаDateTimeKind.Utc? Чому правильний вибірKindкритично важливий у медичних інформаційних системах?Що виведе наступний код? Поясніть, чому результат може бути несподіваним:
DateTime local = DateTime.Now; DateTime utc = DateTime.UtcNow; Console.WriteLine(local > utc);Напишіть код, який обчислює точний вік людини в роках на заданий момент часу, використовуючи
DateTime. Врахуйте, що день народження може ще не настати в поточному році.Що повертає
DateTime.Today, і чим цей результат відрізняється відDateTime.Now? У яких сценаріях краще використовуватиToday?Метод
AddDays(n)повертає новийDateTimeчи змінює поточний? Як відняти 2 тижні від дати прийому?Порівняйте два підходи до обчислення тривалості перебування пацієнта у лікарні:
TimeSpan stay = discharge - admission;TimeSpan stay = discharge.Subtract(admission);Яка між ними різниця?
12.2. Налаштування формату часу та дати
Що таке «стандартні специфікатори форматування» у
DateTime.ToString()? Чим вони відрізняються від «кастомних» специфікаторів?Поясніть різницю між специфікаторами
"d"і ``"D", між"t"і"T"`. Чому важлива різниця між малою та великою літерою?Який специфікатор форматування треба використати, щоб отримати рядок у форматі ISO 8601 без часового поясу (наприклад,
2026-06-11T14:45:20)? Чому ISO 8601 особливо важливий для медичних систем?Що таке
CultureInfo.InvariantCultureі в яких ситуаціях його треба обов'язково вказувати при форматуванні дати?Знайдіть помилку в наступному коді та поясніть, чому вона виникає:
string input = "15.04.1958"; DateTime birth = DateTime.Parse(input);В чому різниця між
DateTime.Parse,DateTime.TryParse,DateTime.ParseExactіDateTime.TryParseExact? Коли слід використовувати кожен із них?Напишіть код, який безпечно зчитує дату народження пацієнта з рядка формату
"dd.MM.yyyy"та виводить повідомлення про помилку, якщо рядок некоректний або дата не існує (наприклад,"29.02.2025").Що виведе наступний код і чому?
DateTime dt = new DateTime(2026, 6, 11, 14, 45, 20, 123); Console.WriteLine(dt.ToString("HH:mm:ss.fff")); Console.WriteLine(dt.ToString("hh:mm tt"));
12.3. DateOnly та TimeOnly
Навіщо в .NET 6 було введено
DateOnlyіTimeOnly, якщо вже існувавDateTime? Яку конкретну проблему вони вирішують?В чому принципова різниця між
TimeOnlyтаTimeSpan? Чому не можна замінити один тип іншим у всіх сценаріях?Як обчислити різницю між двома датами типу
DateOnly? Чому уDateOnlyнемає оператора-, що повертаєTimeSpan?Що виведе наступний код?
TimeOnly night = new TimeOnly(23, 0); TimeOnly next = night.AddHours(2); Console.WriteLine(next);Поясніть поведінку при «переповненні через 24:00».
Як комбінувати
DateOnlyтаTimeOnlyдля отриманняDateTime? Напишіть код, який створюєDateTimeпризначення на конкретну дату та час.Напишіть код, який перевіряє, чи потрапляє час прийому пацієнта у робочий час відділення (08:00–17:00), використовуючи
TimeOnly.IsBetween.Порівняйте
DateOnly.Parse("11.06.2026")таDateTime.Parse("11.06.2026"). Яка різниця у результаті? Де є ризик проблем з часовими поясами?У системі бронювання прийомів дату і час зберігають окремо. Поясніть, чому це архітектурне рішення правильне і яку перевагу дає використання
DateOnly+TimeOnlyзамістьDateTime.
12.4. Структура TimeSpan
Що представляє
TimeSpan— момент у часі чи тривалість? Як він відрізняється відDateTimeіTimeOnly?Пояснити різницю між властивостями
Days,Hours,Minutesта їхніми аналогамиTotalDays,TotalHours,TotalMinutes. Коли використовувати першу групу, а коли другу?Що виведе наступний код? Чи є тут помилка?
TimeSpan ts = new TimeSpan(1, 14, 30, 0); Console.WriteLine(ts.Days); // ? Console.WriteLine(ts.TotalDays); // ? Console.WriteLine(ts.Hours); // ? Console.WriteLine(ts.TotalHours); // ?Напишіть код, який перевіряє, чи пацієнт перебуває у лікарні більше 72 годин, використовуючи
TimeSpan.TotalHours.Що таке
TimeSpan.Duration()і чим він відрізняється відMath.Abs()? КолиDuration()є необхідним?Як отримати
TimeSpanтривалістю рівно 3 доби і 6 годин? Напишіть три різних способи створення цього значення.Порівняйте два способи розрахунку дат наступних прийомів при хіміотерапії з циклом 21 день:
- додавати
AddDays(21)в циклі - використовувати
TimeSpan.FromDays(21)і оператор+Яку перевагу дає другий підхід?
- додавати
Що відбудеться, якщо від пізнішої дати відняти ранішу? Чи буде
TimeSpanвід'ємним? Як отримати абсолютну тривалість незалежно від порядку дат?
12.5. DateTimeOffset та часові пояси
Що таке
DateTimeOffsetі яку фундаментальну проблему він вирішує порівняно зDateTime?Порівняйте семантику рівності
==дляDateTimeіDateTimeOffset:DateTimeOffset kyiv = new DateTimeOffset(2026, 6, 11, 14, 30, 0, TimeSpan.FromHours(3)); DateTimeOffset london = new DateTimeOffset(2026, 6, 11, 11, 30, 0, TimeSpan.FromHours(0)); Console.WriteLine(kyiv == london); // ?Що виведе цей код і чому?
Поясніть різницю між властивостями
UtcDateTime,LocalDateTimeіDateTimeуDateTimeOffset. В яких ситуаціях кожна з них корисна?Як
TimeZoneInfoвраховує перехід на літній/зимовий час? Напишіть код, який перевіряє, чи діє в Києві літній час 1 липня і 1 грудня.Для аудит-журналу медичної системи потрібно зберігати момент події так, щоб пізніше можна було відновити і UTC-час, і локальний час сервера в момент запису. Яку структуру (
DateTime,DateTimeOffset) краще використати і чому?Напишіть код, який конвертує UTC-час
2026-06-11 11:30:00у місцевий час Берліна та Києва, використовуючиTimeZoneInfo.ConvertTimeFromUtc.Що таке
DateTime.TryParseExactі чим він відрізняється відDateTimeOffset.Parse? Для яких сценаріїв кожен підходить краще?Сформулюйте три конкретні правила зберігання та відображення дат у медичних інформаційних системах. Обгрунтуйте кожне правило.