Отображение дат с использованием композитного форматирования – Hey, Scripting Guy! Blog

Резюме: Microsoft Scripting Guy, Ed Wilson рассказывает об использовании композитного форматирования для отображения дат.

Заметка: Это четвертая статья в серии постов о методах и операторах форматирования в Windows PowerShell.

Знакомимся со определителями стандартных форматов даты и времени

Что мне нравится в использовании определителей стандартных форматов даты и времени, так это то, что мне не нужно беспокоиться о том, как будет работать мой скрипт на компьютере с другими языковыми параметрами. По умолчанию, определитель формата даты и времени использует региональные настройки того компьютера, на котором он запущен. Благодаря этому, дата и время всегда отображаются правильно, вне зависимости от того, на каком компьютере запущен скрипт.

Заметка: Более подробную информацию о определителях формата даты и времени вы можете найти в статье Standard Date and Time Format Strings на сайте MSDN.

Используем командлет Get-Date с параметром –Format

Самый простой способ воспользоваться определителями формата даты и времени – это указать их в качестве значения параметра –Format командлета Get-Date. Например, если я хочу получить дату в коротком формате, навроде 3/11/2013 (месяц/день/год – формат, использующийся в Соединенных Штатах), я использую определитель короткого формата даты – “d”.

PS C:\> Get-Date -Format d

3/11/2013

Заметка: Определители формата всегда чувствительны к регистру. Например, существуют такие определители, как “M” и “m”. В нашем случае, “d” – определитель короткого формата даты, а “D” – определитель длинного формата даты. Этот подход, когда строчная буква соответствует короткому формату, а заглавная – длинному, используется довольно часто. Например, “t” – это определитель короткого формата времени, а “T” – определитель длинного формата времени.

На рисунке представлено использование командлета Get-Date с различными определителями формата.

01

Форматирование строк

Стоит помнить о том, что когда вы указываете определитель формата в командлете Get-Date, объект System.DateTime конвертируется в строку. После этого вы уже не сможете производить с ним какие-либо операции, присущие объектам DateTime. Естественно, это не значит, что я не смогу передать это значение в файл Excel или базу данных SQL, но это будет уже не объект DateTime.

Кроме указания определителей формата в командлете Get-Date, я также могу воспользоваться композитным форматированием.

Пример 1. Используем метод Format класса String

В этом примере я воспользуюсь статическим методом Format класса .NET Framework System.String. В качестве аргументов я укажу индекс первого объекта – 0, который будет замещен результатом выполнения командлета Get-Date, а также определитель формата – “R”, соответствующий формату RFC1123.

PS C:\> [String]::Format(«{0:R}»,(get-date))

Mon, 11 Mar 2013 14:37:03 GMT

Пример 2. Используем оператор форматирования PowerShell

Для представления даты и времени в различных форматах я могу также воспользоваться оператором форматирования Windows PowerShell –f. Слева от него я задам элемент форматирования с требуемым определителем формата, справа я укажу командлет Get-Date. В представленной команде дата и время выводятся в универсальном формате.

PS C:\> «{0:U}» -f (Get-Date)

Monday, March 11, 2013 6:38:10 PM

Пример 3. Отображаем дату в соответствии с определенными региональными настройками

Кроме отображения даты в соответствии с региональными параметрами вашего компьютера, вы можете задать нужные региональные настройки вручную. Для этого нам нужно воспользоваться командлетом New-Object, чтобы создать экземпляр класса .NET Framework Globalization.CultureInfo. В качестве параметра мне нужно будет указать код в формате “язык-регион” (culture). Список кодов для разных стран и языков можно найти в статье National Language Support (NLS) API Reference.

Таким образом, все что мне нужно сделать — это создать экземпляр класса CultureInfo, указав нужные язык и регион, и указать формат отображения даты и времени. В этом примере я получаю текущие дату и время и сохраняю их в переменной $date. Далее я создаю экземпляр объекта CultureInfo и указываю в нем код “de-DE” (Немецкий — Германия). Затем я использую метод WriteLine для отображения даты в виде строки. В качестве параметров метода ToString я указываю определитель длинного формата даты – “D” и региональные настройки, ранее сохраненные в переменной $ci.

PS C:\> $date = get-date

PS C:\> $ci = New-Object globalization.cultureinfo(«de-DE»)

PS C:\> [console]::writeline($date.ToString(«D»,$ci))

Montag, 11. März 2013

Если я воспользуюсь командлетом Get-Culture, чтобы получить мои текущие региональные настройки, то будет выведена следующее.

PS C:\> Get-Culture

LCID Name DisplayName

—- —- ————

1033 en-US English (United States)

Заметка: Более подробное рассмотрение использования региональных настроек для вывода даты вы можете найти в посте Hey, Scripting Guy! Blog – Use Culture Information in PowerShell to Format Dates.

Автор:

Ed Wilson, Microsoft Scripting Guy

Оригинал:

http://blogs.technet.com/b/heyscriptingguy/archive/2013/03/14/use-powershell-and-conditional-formatting-to-format-dates.aspx


Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell


Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s