我使用,使用一个脚本的转换。CSV原始数据文件,为更易于管理的数据格式与独立的柱,一个更清洁的图等等。 而由于源文件与原始数据是在我们的日期和时间格式(例如11/23/21,1:00),然后如果电脑是在同我们的格式转换过程的运行完全作为应用0错误。 但是,如果电脑是不同国家的日期和时间格式,然后PowerShell示出了差错在红在这一进程。
当电脑中的其他DateTime格式,我看到的主要错误是:
"分析"与"1"的说法(s):"String是不被承认为一个有效日期时间。"
问题是电脑在那里这会被用于不是在我们的格式(仅改变了我们的格式进行测试),使可能有人在这里,请帮助我要添加到转换过程中的语法或刑/s简单地指定直接在代码的固定格式保持一个静态的输出格式独立的关于电脑时钟的日期和时间格式,如果一项投入文件"11/23/21,1:00"然后指定的代码你想输出格式"dd-嗯-yyyy hh:mm" 有一个结果,如"23-Nov-2021 01:00"
代码部分中的脚本用于转换为:
…
$data = $csvData | ? {$_ -match "\(DTRE"}
dtreFileData = New-Object System.Collections.Generic.List[PSCustomObject]
foreach ($item in $data)
{
$null = $item.Strategy -match "\(DTRE\|(.*)\)"
$v = $Matches[1] -split '\|'
$resultvalue = $v[0] | Convert-CurrencyStringToDecimal
$expectedvalue = $v[1] | Convert-CurrencyStringToDecimal
$dtreData = [PSCustomObject]@{
'DateTime' = ([datetime]::Parse($item.'Date/Time'))
'ResultValue' = [decimal]$resultvalue
'ExpectedValue' = [decimal]$expectedvalue
}
$null = $dtreFileData.Add($dtreData)
$null = $dtreAllData.Add($dtreData)
}
$dtreFileData | Export-Csv -Path (Join-Path (Split-Path -Path $f -Parent) ($outFile + '.csv')) -Force -NoTypeInformation -Encoding ASCII
…
例的原始来源数据(在CVS文件是几十种线喜欢下一个):
...(DTRE|49.0|48.2);...;11/23/21, 12:58 下午...;
...(DTRE|52.1|52.0);...;11/23/21, 1:00 下午...;
...
...
和输出这样的:
我试着用DateTime例子在其他员额从这里(stackoverflow.com)调整的代码工作一个电脑没有我们的日期和时间格式,并获得DateTime格式的结果以上所述。 例如:
'DateTime' = ([datetime]::Parse($item.'yyyy-MM-dd:HH:mm:ss'))
'DateTime' = ([datetime]::ParseExact($item.'yyyy-MM-dd:HH:mm:ss'))
…
$culture = [Globalization.CultureInfo]::InvariantCulture
…
'DateTime' = ([datetime]::ParseExact($item.'yyyy-MM-dd:HH:mm:ss', $culture))
…
但是,与这些实例PowerShell显示了错误"不能约束的参数,以参数'InputObject',因为它是null"
更新后的答案,从@塞斯:
在想下一步的修改的代码,用电脑系统中的日期格式中的"24-Nov-21"和其余部分如上:
…
$resultvalue = $v[0] | Convert-CurrencyStringToDecimal
$expectedvalue = $v[1] | Convert-CurrencyStringToDecimal
$cultureInfo= New-Object System.Globalization.CultureInfo("es-ES")
$dtreData = [PSCustomObject]@{
'DateTime' = ([System.DateTime]::Parse($item.'Date/Time', $cultureInfo))
'ResultValue' = [decimal]$resultvalue
'ExpectedValue' = [decimal]$expectedvalue
…
dd-MMM-yyyy hh:mm
或例如为在文化的名字es-ES
或者类似的东西",即被直接指定的代码作为一个普遍/通用的方法,该工作无论如何,如果该电脑是英文的日期和时间格式,或如果电脑是在西班牙的日期和时间格式,或如果电脑是在法国的日期和时间格式