Проблемы с преобразованием строки в интервал времени для суммирования столбца, импортированного из CSV - PullRequest
0 голосов
/ 29 мая 2019

Я хочу импортировать файл CSV с моим рабочим временем. Формат выглядит следующим образом:

Description;Start Time;End Time;Duration;Day

Когда я импортирую CSV, каждый объект импортируется как строка. Я пытаюсь преобразовать столбец «Продолжительность» в [временной диапазон], чтобы суммировать этот столбец. Это не работает.

$import = Import-Csv -Path "C:\admin\test3\tst_tasks_Mai-2019.csv" -Delimiter ";" |
          Sort-Object -Top 15
$sort_description = $import | Sort-Object {$_.Description}
$set_dateformat = $sort_description | ForEach-Object {
    $_.Duration = [timespan]$_.Duration
}

Сообщение об ошибке:

Невозможно преобразовать значение "System.Object []" типа "System.Object []" в тип "System.TimeSpan"

1 Ответ

0 голосов
/ 29 мая 2019

Время и дата имеют много разных форматов, основанных на культуре, с множеством возможных мест для неоднозначности ... одна строка не всегда (или даже часто) отображается точно на один интервал времени. Следовательно, недостаточно просто привести строку через [timespan]. Вы должны разобрать строку.

Вы можете попробовать это, но я не уверен, что вам также не понадобится делать что-то еще для создания проекта данных, который вы ищете, или использовать перегрузку Parse(), которая позволяет вам быть более точным в отношении ожидаемый формат:

 $_.Duration = System.TimeSpan::Parse($_.Duration)
...