.NET Framework
DateTime 구문 분석
수색…
ParseExact
var dateString = "2015-11-24";
var date = DateTime.ParseExact(dateString, "yyyy-MM-dd", null);
Console.WriteLine(date);
2015 년 11 월 24 일 12:00:00 AM
CultureInfo.CurrentCulture
를 세 번째 매개 변수로 전달하는 것은 null
을 전달하는 것과 동일합니다. 또는 특정 문화를 전달할 수 있습니다.
형식 문자열
입력 문자열은 형식 문자열과 일치하는 모든 형식 일 수 있습니다.
var date = DateTime.ParseExact("24|201511", "dd|yyyyMM", null);
Console.WriteLine(date);
2015 년 11 월 24 일 12:00:00 AM
형식 지정자가 아닌 문자는 리터럴로 처리됩니다.
var date = DateTime.ParseExact("2015|11|24", "yyyy|MM|dd", null);
Console.WriteLine(date);
2015 년 11 월 24 일 12:00:00 AM
형식 지정자에 대한 중요한 문제
var date = DateTime.ParseExact("2015-01-24 11:11:30", "yyyy-mm-dd hh:MM:ss", null);
Console.WriteLine(date);
2011 년 11 월 24 일 11:01:30
월 및 분 값은 잘못된 대상으로 구문 분석되었습니다.
단일 문자 형식 문자열은 표준 형식 중 하나 여야합니다.
var date = DateTime.ParseExact("11/24/2015", "d", new CultureInfo("en-US"));
var date = DateTime.ParseExact("2015-11-24T10:15:45", "s", null);
var date = DateTime.ParseExact("2015-11-24 10:15:45Z", "u", null);
예외
ArgumentNullException
var date = DateTime.ParseExact(null, "yyyy-MM-dd", null);
var date = DateTime.ParseExact("2015-11-24", null, null);
FormatException
var date = DateTime.ParseExact("", "yyyy-MM-dd", null);
var date = DateTime.ParseExact("2015-11-24", "", null);
var date = DateTime.ParseExact("2015-0C-24", "yyyy-MM-dd", null);
var date = DateTime.ParseExact("2015-11-24", "yyyy-QQ-dd", null);
// Single-character format strings must be one of the standard formats
var date = DateTime.ParseExact("2015-11-24", "q", null);
// Format strings must match the input exactly* (see next section)
var date = DateTime.ParseExact("2015-11-24", "d", null); // Expects 11/24/2015 or 24/11/2015 for most cultures
가능한 여러 형식 처리
var date = DateTime.ParseExact("2015-11-24T10:15:45",
new [] { "s", "t", "u", "yyyy-MM-dd" }, // Will succeed as long as input matches one of these
CultureInfo.CurrentCulture, DateTimeStyles.None);
문화 차이 처리
var dateString = "10/11/2015";
var date = DateTime.ParseExact(dateString, "d", new CultureInfo("en-US"));
Console.WriteLine("Day: {0}; Month: {1}", date.Day, date.Month);
Day : 11; 월 : 10
date = DateTime.ParseExact(dateString, "d", new CultureInfo("en-GB"));
Console.WriteLine("Day: {0}; Month: {1}", date.Day, date.Month);
일 : 10; 월 : 11
TryParse
이 메서드는 문자열을 입력으로 받아 들여 DateTime
으로 구문 분석하고 성공 또는 실패를 나타내는 부울 결과를 반환합니다. 호출이 성공하면 out
매개 변수로 전달 된 변수에 구문 분석 결과가 채워집니다.
구문 분석이 실패하면 out
매개 변수로 전달 out
변수는 기본값 인 DateTime.MinValue
설정됩니다.
TryParse (string, out DateTime)
DateTime parsedValue;
if (DateTime.TryParse("monkey", out parsedValue))
{
Console.WriteLine("Apparently, 'monkey' is a date/time value. Who knew?");
}
이 메서드는 시스템 지역 설정 및 ISO 8601 및 기타 일반 형식과 같은 알려진 형식을 기반으로 입력 문자열을 구문 분석하려고합니다.
DateTime.TryParse("11/24/2015 14:28:42", out parsedValue); // true
DateTime.TryParse("2015-11-24 14:28:42", out parsedValue); // true
DateTime.TryParse("2015-11-24T14:28:42", out parsedValue); // true
DateTime.TryParse("Sat, 24 Nov 2015 14:28:42", out parsedValue); // true
이 메서드는 culture 정보를 받아들이지 않으므로 시스템 로캘을 사용합니다. 이로 인해 예기치 않은 결과가 발생할 수 있습니다.
// System set to en-US culture
bool result = DateTime.TryParse("24/11/2015", out parsedValue);
Console.WriteLine(result);
그릇된
// System set to en-GB culture
bool result = DateTime.TryParse("11/24/2015", out parsedValue);
Console.WriteLine(result);
그릇된
// System set to en-GB culture
bool result = DateTime.TryParse("10/11/2015", out parsedValue);
Console.WriteLine(result);
참된
미국에 계시다면 파싱 된 결과가 10 월 11 일이 아니라 11 월 10 일이라는 사실에 놀랄 수 있습니다.
TryParse (문자열, IFormatProvider, DateTimeStyles, out DateTime)
if (DateTime.TryParse(" monkey ", new CultureInfo("en-GB"),
DateTimeStyles.AllowLeadingWhite | DateTimeStyles.AllowTrailingWhite, out parsedValue)
{
Console.WriteLine("Apparently, ' monkey ' is a date/time value. Who knew?");
}
형제 메서드와 달리이 오버로드를 통해 특정 문화권 및 스타일을 지정할 수 있습니다. IFormatProvider
매개 변수에 null
을 전달하면 시스템 culture가 사용됩니다.
예외
이 메소드는 특정 조건에서 예외를 throw 할 수 있습니다. IFormatProvider
및 DateTimeStyles
와 같은 오버로드에 대해 도입 된 매개 변수와 관련이 있습니다.
-
NotSupportedException
:IFormatProvider
는 중립 문화를 지정합니다. -
ArgumentException
:DateTimeStyles
가 유효한 옵션이 아니거나AssumeLocal
및AssumeUniversal
과 같은 호환되지 않는 플래그가 포함되어 있습니다.
TryParseExact
이 메서드는 TryParse
와 ParseExact
의 조합으로 동작합니다. 사용자 지정 형식을 지정할 수 있으며 구문 분석에 실패하면 예외를 throw하는 대신 성공 또는 실패를 나타내는 Boolean 결과를 반환합니다.
TryParseExact (문자열, 문자열, IFormatProvider, DateTimeStyles, out DateTime)
이 오버로드는 특정 형식에 대해 입력 문자열을 구문 분석하려고 시도합니다. 입력 문자열은 구문 분석을 위해 해당 형식과 일치해야합니다.
DateTime.TryParseExact("11242015", "MMddyyyy", null, DateTimeStyles.None, out parsedValue); // true
TryParseExact (문자열, 문자열 [], IFormatProvider, DateTimeStyles, out DateTime)
이 오버로드는 일련의 형식에 대해 입력 문자열을 구문 분석하려고 시도합니다. 입력 문자열은 파싱하기 위해 하나 이상의 형식과 일치해야합니다.
DateTime.TryParseExact("11242015", new [] { "yyyy-MM-dd", "MMddyyyy" }, null, DateTimeStyles.None, out parsedValue); // true