将字符串转换为时间跨度以求和从CSV导入的列时遇到的问题

时间:2019-05-29 14:02:34

标签: powershell powershell-v6.0

我想用我的工作时间导入CSV文件。格式如下:

Description;Start Time;End Time;Duration;Day

当我导入CSV时,每个对象都作为字符串导入。 我尝试将colmn'Duration'转换为[timespan]以求和。 这是行不通的。

$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 :(得分:0)

根据文化,时间和日期有许多不同的格式,有许多可能的歧义位置...一个字符串并不总是(甚至经常)映射到一个TimeSpan。因此,仅通过[timespan]强制转换字符串是不够的。您必须解析该字符串。

您可以尝试执行此操作,但是我不确定您是否还不需要执行其他操作来创建要执行的数据项目,也可以使用Parse()重载使您更加精确关于预期的格式:

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