1

こんにちは、

次のコードを実行すると「文字列が有効な日時として認識されませんでした」というメッセージが表示されるため、powershell を使用して日付 20120624 を yyyyMMdd に変換する方法を教えてください。

[String]$ServiceTag = "b26ybt1";

Try{ 
       $AssetService = New-WebServiceProxy -Uri "http://xserv.dell.com/services/AssetService.asmx?WSDL"; 
       $ApplicationName = "AssetService"; 
       $Guid = [Guid]::NewGuid(); 
       $Asset = $AssetService.GetAssetInformation($Guid,$ApplicationName,$ServiceTag); 
       $Writer = New-Object "System.IO.StringWriter"; 
       $XmlSerializer = New-Object System.Xml.Serialization.XmlSerializer($Asset.GetType()); 
       $XmlSerializer.Serialize($Writer,$Asset); 
       [String]$Result = $Writer.ToString(); 
       $Writer.Flush(); 
       $Writer.Close(); 
       Return $Result; 
} 
Catch{ 
       Write-Host $($_.Exception.Message);     
}

$prog = [regex]::match($Result,'(?<=StartDate>)(.*)(?=T00)').Groups[1].Value
[System.Text.RegularExpressions.Regex]::Replace($prog,"[-]","");

[datetime]::ParseExact($prog,"yyyyMMdd",$null)
4

2 に答える 2

3

変化する

[System.Text.RegularExpressions.Regex]::Replace($prog,"[-]","");

$prog = [System.Text.RegularExpressions.Regex]::Replace($prog,"[-]","");

あなたがしたことは、置換が行うことを返すことだけで、実際に変数に割り当てたことはありません。上記のように実行すると、次のようになりました。

Sunday, June 24, 2012 12:00:00 AM
于 2012-09-06T16:24:04.567 に答える
1

結果を文字列ではなく XML に変換し、文字列の解析を回避できます。

[xml]$Result = $Writer.ToString()
[datetime]$Result.ArrayOfAsset.Asset.Entitlements.EntitlementData[0].StartDate
于 2012-09-06T17:47:14.217 に答える