Те, як ми вимірюємо час, досить заплутано. У хвилині 60 секунд, а в годині 60 хвилин. Це прийшло з давнього Вавилону, де число 60 було основою їхньої системи числення. У добі 24 години, у тижні 7 днів, а скільки днів у місяці? Що ж, кількість днів у місяці залежить не лише від того, який це місяць, а й від того, який тип календаря використовують у країні, де ми живемо.
А що, якби для вираження часових проміжків ми використовували лише секунди? Тоді ми могли б застосовувати префікси метричної системи, щоб записувати великі числа секунд у легших для сприйняття величинах.
Якщо ми колись колонізуємо Марс чи якусь іншу планету, вимірювання часу стане ще заплутанішим. Коли хтось каже «рік», то має на увазі рік на Землі чи рік на Марсі?
Ідея цієї вправи походить із науково-фантастичного роману "A Deepness in the Sky" автора Вернора Вінґа. У ньому автор використовує метричну систему як основу для вимірювання часу.
Визначте дату й час через один гігасекунд після певної дати.
Гігасекунда - це тисяча мільйонів секунд. Інакше кажучи, це одиниця з девʼятьма нулями після неї.
Якби ми народилися 24 січня 2015 року о 22:00 (10:00:00pm), то 2 жовтня 2046 року о 23:46:40 (11:46:40pm) нам виповнився б один гігасекунд.
У цій вправі потрібно скористатися функціями часу GNU awk.
Для функцій парсингу й форматування дати й часу обовʼязково встановіть прапорець UTC. Щоб продемонструвати:
export TZ=Asia/Kolkata
gawk 'BEGIN {
time = 1234567890
print strftime("%Y-%m-%d %T", time) # format for local timezone
print strftime("%Y-%m-%d %T", time, 1) # format for UTC
}'
виводить:
2009-02-14 05:01:30
2009-02-13 23:31:30
Зареєструйтеся на Exercism, щоб вивчати й опановувати AWK, а також 3 концепції92 вправи та справжнє наставництво від людей, і все це безкоштовно.