Преобразование даты в строку

Fish Shell:
Преобразование даты в строку

Как это сделать:

Fish shell делает всё просто. Давайте отформатируем текущую дату:

set formatted_date (date "+%Y-%m-%d")
echo $formatted_date

Пример вывода:

2023-04-11

Хотите что-то более конкретное, например, день недели?

set day_of_week (date "+%A")
echo $day_of_week

Пример вывода:

Вторник

А как насчёт добавления времени? Вот дата и время в 24-часовом формате:

set date_and_time (date "+%Y-%m-%d %H:%M:%S")
echo $date_and_time

Пример вывода:

2023-04-11 21:30:47

Подробнее

В прошлом, в системах, подобных Unix, таких как Linux, использовалась команда date, которая со временем эволюционировала и остаётся распространённой в оболочках вроде bash и zsh. Fish shell наследует эту команду, но стимулирует использование более читаемого синтаксиса без флагов для установки переменных.

Существуют альтернативы, такие как функция strftime во многих языках программирования. Fish нативно не поддерживает это, но date в UNIX достаточно универсален, чтобы удовлетворить большинство потребностей.

При преобразовании даты в строку используются спецификаторы формата, например, %Y для года или %A для дня недели, которые следуют стандарту POSIX. Команда date использует эти спецификаторы для извлечения и форматирования конкретных частей даты.

Важно отметить, что поскольку даты и времена настолько зависят от локали и часового пояса, получаемые строки могут варьироваться, если не указать пояс особо. Можно установить часовой пояс перед вызовом date:

set TZ 'America/New_York'
set date_with_timezone (date "+%Y-%m-%d %H:%M:%S %Z")
echo $date_with_timezone

Это гарантирует, что вы учли локальность ваших данных — деталь, которую не стоит упускать в глобализированном мире.

См. также

  • Страница man для date (онлайн-руководство) даст вам полное представление о спецификаторах формата.
  • Для более широкого контекста прочитайте о стандартах POSIX.
  • Ознакомьтесь с официальной документацией Fish shell о переменных, чтобы лучше понять команду set.