본문 바로가기

Microsoft/PowerShell

DateTime 변환 시 Format 관련

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 형으로 변환되는 것을 볼 수 있습니다.




'Microsoft > PowerShell' 카테고리의 다른 글

Visual Studio에 Powershell 추가 방법  (0) 2014.10.31