Форматирование дат и времени

Два поста назад я рассказал про то как можно преобразовать практически любое текстовое представление даты/времени в формат DateTime. Сегодня займемся обратным преобразованием😉

В сравнении например с cmd.exe форматирование дат в PowerShell стало неимоверно проще и гибче. Пара примеров с командлетом Get-Date:

[PS <12> C:\Root] Get-Date -Format 'dd-MM-yyyy-(hh-mm-ss)'
09-07-2008-(09-17-44)
[PS <13> C:\Root] Get-Date -Format 'dddd, dd MMMM yyyy г.'
среда, 09 июля 2008 г.

Конечно здорово что у Get-Date есть ключ -Format, но что делать если у нас уже есть значение даты сохранённое в переменной, которое мы хотим отформатировать? Тут уже будет использоватся оператор -f:

[PS <14> C:\Root] $yesterday = (Get-Date).adddays(-1) #вчерашняя дата
[PS <15> C:\Root] $yesterday -f 'dd/MM/yy HH:mm:ss'
07/08/2008 10:02:40

Этот маленький (по количеству символов, но не по значению😉 ) оператор обладает немаленькими возможностями. И не только касательно дат. Вот пример его возможностей:

[PS <16> C:\Root] $f = get-item .\test.exe
[PS <17> C:\Root] 'Имя: "{0}" {1}Размер: {2:n2} Кб. {1}Измененен: {3:dd MMM yyyy}г.' -f $f.name,"`t",($f.length/1kb),$f.lastWriteTime
Имя: "test.exe"         Размер: 508,04 Кб.      Измененен: 09 май 2008г.

Подробнее эту конструкцию разберу в следующий раз😉

комментариев 7 to “Форматирование дат и времени”

  1. Сдвиг субтитров « PowerShell и другие скрипты Says:

    […] Ну и пара ссылок на приемы работы с датами которые я тут использовал: ParseExact и оператор -f. […]

  2. Владимир Says:

    А у меня -f не работает. Чтобы я ни ставил в кавычках после -f, дату выдает в таком формате: 03/02/2009 18:02:40, причем на первом месте все время месяц, потом день и год. Если вообще -f не указывать выдает в формате: вторник, 03 марта 2009 г. 18:05:50

  3. Xaegr Says:

    Владимир: А покажите полностью команду и результат.

  4. Владимир Says:

    $a = (get-date).adddays(5)
    $a
    9 березня 2009 р. 8:50:43
    $a -f ‘dd/MM/yy’
    03/09/2009 8:50:43

  5. Владимир Says:

    Кстати, у тебя в примере тоже 8 июля 2008 г. записано не так, как заказано — выводится не dd/mm/yy, а mm/dd/yyyy :))

  6. Xaegr Says:

    Да… Чего то я прогнал про оператор🙂 Бывает🙂
    Вот так работает:
    Get-Date $yesterday -f ‘dd/MM/yy HH:mm:ss’
    Get-Date $a -f ‘dd/MM/yy’

  7. Владимир Says:

    Спасибо, все работает!:)


Обсуждение закрыто.

%d такие блоггеры, как: