String 在powershell中将字符串转换为24小时时间格式

String 在powershell中将字符串转换为24小时时间格式,string,powershell,time,String,Powershell,Time,我在将一些字符串短时间值转换为24小时时间格式时遇到问题 在脚本中,我使用以下foreach循环来解析来自csv的每一行数据: Foreach ($Line in $Data) { $command.CommandText=$SQLCommandPre+ ` "'"+$line."Reference" ` +"','"+$line."Date" ` +"','"$line."Business Hour".SubString(0,8) `

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

在脚本中,我使用以下foreach循环来解析来自
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))

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

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

C:\PS> "{0:HH:mm}" -f [datetime]'12:00 AM'
00:00

实现这一点有多种方法。我可能会这样做:

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

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

您是否只想获得时间(例如下午2:00)并将其转换为14:00?谢谢,我想我已经尝试过了,但我想我可能输入错了。