내가 사용하여 PowerShell 스크립트로 변환합니다.CSV 원시 데이터 파일 이상으로 관리할 수 있는 데이터 형식으로 별도의 열기,청소기 등입니다. 기 때문에 소스 파일과 함께 원시 데이터는 미국에서 날짜 및 시간 형식(예:11/23/21,1:00PM)다음 경우,PC 에서 같은 우리가 형식으로 전환 프로세스를 실행으로 완벽하게 해야 0 오류가 있습니다. 하지만,이하인 경우는 다른 나라에서 날짜 및 시간 형식,다음 PowerShell 오류를 보여줍니다에 빨간색이다.
면 컴퓨터에서 다른 날짜/시간 형식으로 저는 주요 오류는 다음과 같습니다.
"구문 분석"가"1"인수(s):"라는 문자열으로 인식되지 않은 유효한 날짜/시간입니다."
과 문제가 PC 이 사용됩니다 미국에서 형식(만 변경을 우리에게 형식 테스트),그래서 수 있는 누군가가 여기에 나를 도와 주시를 추가하는 변환 프로세스를 구문을하거나 문장에 의해 간단히 지정 코드에서 직접 고정된 형식으로 유지하는 정적 출력 형식에 대해 독립적으로 PC 의 시계의 날짜 및 시간 형식,그리고 경우에 한 개의 입력으로 파일은"11/23/21,1:00"다음을 지정 코드에서 당신이 원하는 형식으로 출력한"dd-MMM-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
…
를 들어의 소스 데이터(csv 파일에 수십 개의 라인과 같은 다음 중 하나):
...(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"
한 후 업데이트로부터의 응답@Seth:
하려고 할 때 다음의 수정 코드와 PC 시스템 날짜 형식에서"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
또는 이와 유사한",즉,직접 지정 코드로 범용/일반 방식으로 이에 관계없이 작동하는 경우 PC 에서 영어 날짜 및 시간 형식,또는 컴퓨터에서 스페인 날짜 및 시간 형식,또는 컴퓨터에 프랑스의 날짜 및 시간 형식