Изменение формата DateTime в нескольких CSV-файлах

Изменение формата DateTime в нескольких CSV-файлах

У меня есть несколько CSV-файлов со следующей структурой:

text, text, 01/27/2001 01:00:00 PM

Мне нужно обновить ВСЕ CSV-файлы, используя следующий формат даты и времени:

text, text, 27-Jan-2001 13:00:00

Есть ли известный умный/быстрый способ сделать это? Я пробовал импортировать их в Excel, но это индивидуальная задача [копировать/вставить по одному], так что я полагаю, что это не лучший способ сделать это. Может быть, какая-то функция в Notepadd++ [не смог найти]

Спасибо,

решение1

Вот скрипт PowerShell для обновления нескольких CSV-файлов из определенной папки за один шаг.

ForEach ($file in Get-ChildItem "C:\myFolder" -filter "*.csv"){         
    Get-Content $file.Fullname | ForEach { 
        $arLine = $_ -split ","
        $date = [DateTime]$arLine[2]
        $arLine[2] = $date.ToString(" dd-MMM-yyyy HH:mm:ss")    
        [array]$arFile += $arLine -join ","
        } 
    $arFile | Out-File $file.Fullname
    clear-variable arFile           
    }

Что оно делает

  1. Просматривать каждый файл в указанной папке и фильтровать только файлы CSV
  2. Прочитайте каждый CSV-файл и просмотрите каждую строку.
  3. Разделить каждую строку на массив. Запятая — наш разделитель
  4. Преобразуйте строку даты, например, 01/27/2001 01:00:00 PMв объект даты PowerShell.
  5. Отформатируйте объект даты и запишите его обратно в массив. [2]обозначает третье значение/столбец, поскольку мы начинаем отсчет с нуля.
  6. Объедините все значения текущей строки, чтобы получить одну строку. Используйте запятую в качестве разделителя
  7. Добавьте все строки в один массив, чтобы мы могли записать их все одновременно в файл.
  8. Перейти к следующему CSV-файлу

решение2

Самый быстрый способ — написать макрос в VBA Excel, который открывает файлы CSV, меняет форматирование и снова сохраняет их как файлы CSV. Попробуйте выполнить следующие действия:

  • Записать макрос в Excelкоторый выполняет именно эту задачу дляодинcsv-файл (начните запись, откройте файл, выполните форматирование и снова сохраните файл).
  • Использоватьэтот ответ SUчтобы пройти по всем файлам в каталоге, чтобы выполнить задачу, которую вы только что создали. Вам понадобитсяФункция Dirи цикл While.

Итак, ваш код будет выглядеть так (не испытано!):

Public Sub ChangeDates()
    Dim StrFile as String

    strFile = Dir("C:\Some\Location\Of\Your\Files\*.csv")
    While strFile <> ""
        # Append the stuff from the recorded macro here and adjust the filename
        # Probably something like:
        Workbooks.Open Filename:=strFile
        Columns("C:C").Select
        Selection.NumberFormat = "dd-mm-yyyy HH:mm:ss"  # or something else
        ActiveWorkbook.Save
        ActiveWorkbook.Close
        strFile = Dir
    End While
End Sub

Связанный контент