Как мы можем преобразовать дату в файл CSV, используя скрипты PowerShell - PullRequest
1 голос
/ 10 июня 2019

У меня есть CSV-файл, имеющий столбец - Дата.В настоящее время его формат 30.07.2009.Я хочу сделать преобразования даты с помощью PowerShell.Требуемый формат будет: 2019-30-07.Как мы можем это сделать?

Я использовал следующий код для этого.Но это только частично для некоторых записей.И не для других записей.

Код, который я использую:

(get-content FileCheck.csv) -replace "(\d{2})\/(\d{2})\/(\d{4})", '$3-$2-$1'  |
    sc Output3.csv

Ответы [ 2 ]

2 голосов
/ 10 июня 2019

Один из способов сделать это - преобразовать в [DateTime] и затем вывести в нужном формате.Пример:

Import-Csv ImportData.csv | Select-Object LastName,FirstName,
  @{Name = "Date"; Expression = {"{0:yyyy-MM-dd}" -f ($_.Date -as [DateTime])}}
} | Export-Csv New.csv -NoTypeInformation

В этом примере выбираются столбцы и используется вычисленное свойство для приведения даты к типу [DateTime] и последующего вывода в желаемый формат строки.

0 голосов
/ 10 июня 2019

Чтобы меньше проблем с изменением CSV-файла,
без знания или изменения порядка столбцов,
Вы можете использовать следующий скрипт.

  • 1-е чтение в оригинальном заголовке
  • после замены столбца Date на переформатированный с вычисляемым свойством
    (иначе будет последний столбец)
  • восстанавливает предыдущий ордер с дополнительным Select-Object

## Q:\Test\2019\06\10\SO_56528528.ps1

$CsvIN  = '.\Sample.csv'
$CsvOut = '.\NewSample.csv'
$Header = (Get-Content $CsvIn -Head 1).split(',')

Import-Csv $CsvIn |
  Select-Object *,@{n='Date';e={(Get-Date $_.Date).ToString('yyyy\-MM\-dd')}} -ExcludeProperty Date | 
    Select-Object $Header | 
      Export-Csv $CsvOut -NoTypeInformation 

> Get-Content .\Sample.csv
foo,bar,Date,baz
abc,def,7/30/2019,ghi

> Get-Content .\NewSample.csv
"foo","bar","Date","baz"
"abc","def","2019-07-30","ghi"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...