수색…


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 할 수 있습니다. IFormatProviderDateTimeStyles 와 같은 오버로드에 대해 도입 된 매개 변수와 관련이 있습니다.

  • NotSupportedException : IFormatProvider 는 중립 문화를 지정합니다.
  • ArgumentException : DateTimeStyles 가 유효한 옵션이 아니거나 AssumeLocalAssumeUniversal 과 같은 호환되지 않는 플래그가 포함되어 있습니다.

TryParseExact

이 메서드는 TryParseParseExact 의 조합으로 동작합니다. 사용자 지정 형식을 지정할 수 있으며 구문 분석에 실패하면 예외를 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


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow