Powershell에서 String형을 datetime형으로 변환하기 위한 방법입니다.
20160714 와 같은 format을 ToDateTime 이나 [datetime] 을 사용하여 변환하려고 하면 오류가 발생합니다.
이럴때 ParseExact를 사용하여 현재 Format을 인지 시켜 줘야합니다.
ParseExact의 Parameter는 다음과 같습니다.
s
Type: System.String
A string that contains a date and time to convert.
format
Type: System.String
A format specifier that defines the required format of s.
provider
Type: System.IFormatProvider
An object that supplies culture-specific format information about s.
그럼 다음과 같이 예시를 통해 알아보도록 하겠습니다.
>> $strDate = "20160714"
>> $dateDate = [datetime] $strDate
값 "20160714"을(를) "System.DateTime" 유형으로 변환할 수 없습니다. 오류: "문자열이 유효한 DateTime으로 인식되지 않습니다."
위치 줄:1 문자:1
+ $dateDate = [datetime] $strDate
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvalidCastParseTargetInvocationWithFormatProvider
>> $dateDate = [datetime]::parseExact($strDate, "yyyyMMdd", $null)
>> WriteHost $dateDate
2016-07-14 오전 12:00:00
parseExact를 통해 현재 String형의 각 값이 어떤 의미를 가지는지 인식을 시켜주면 정상적으로 DateTime 형으로 변환되는 것을 볼 수 있습니다.