4

我在将一些字符串短时间值转换为 24 小时时间格式时遇到问题。

在脚本中,我有以下 foreach 循环来解析来自 a 的每一行数据csv

Foreach ($Line in $Data) {
    $command.CommandText=$SQLCommandPre+ `
        "'"+$line."Reference" `
        +"','"+$line."Date" `
        +"','"$line."Business Hour".SubString(0,8) `
        +"','"+"{0:f2}" -f ($line."Total"/2) `
    +"','"+"{0:f0}" -f ($line."Number"/2) `
    +"')"
    [void] $command.ExecuteNonQuery()
}

例如,我的源数据是:

0101,8/19/2012,12:00 AM - 12:59 AM,241.83,21

目前在脚本中它只是上午 12 点,但我需要转换为 00:00。我尝试使用以下方法,但它对 powershell 创建的查询没有影响:

"{0:HH:mm}" -f ($line."Business Hour".SubString(0,8))

我一直无法找到另一种方法来达到我的目标。

4

2 回答 2

7

确保在尝试格式化之前将检索到的字符串转换为 [DateTime] 对象,例如:

C:\PS> "{0:HH:mm}" -f [datetime]'12:00 AM'
00:00
于 2012-08-28T15:40:04.870 回答
0

将有多种方法来实现这一点。这是我可能会这样做的方式:

$test = '0101,8/19/2012,12:00 AM - 12:59 AM,241.83,21'
([dateTime]$test.Split(',')[2].Split('-')[0]).ToString('HH:mm')

如果需要,您可以调整如何获取子字符串。在这种情况下,我更喜欢拆分 .SubString() ,因为它更能容忍字符串长度的变化。

于 2012-08-28T15:41:47.360 回答