문제

나는 datetime.parseexact 메소드를 가지고 놀고 있었고 iformatprovider를 원합니다 ...

NULL을 입력하지만 정확히 무엇을합니까?

도움이 되었습니까?

해결책

이안 보이드의 대답에 대한 지정으로 :

또한 CultureInfo 이 인터페이스를 구현하고 귀하의 경우에 사용할 수 있습니다. 예를 들어 프랑스 날짜 문자열을 구문 분석 할 수 있습니다. 당신은 사용할 수 있습니다

var ci = new CultureInfo("fr-FR");
DateTime dt = DateTime.ParseExact(yourDateInputString, yourFormatString, ci);

다른 팁

그만큼 IFormatProvider 인터페이스는 일반적으로 귀하를 위해 구현됩니다 CultureInfo 수업, 예를 들어 :

  • CultureInfo.CurrentCulture
  • CultureInfo.CurrentUICulture
  • CultureInfo.InvariantCulture
  • CultureInfo.CreateSpecificCulture("de-CA") //German (Canada)

인터페이스는 기능이 문화에서 일련의 문화 별 데이터를 얻는 게이트웨이입니다. 일반적으로 이용 가능한 두 개의 문화 대상 IFormatProvider 쿼리 될 수 있습니다.

  • DateTimeFormatInfo
  • NumberFormatInfo

일반적으로 작동하는 방식은 IFormatProvider 당신에게주기 위해 DateTimeFormatInfo 물체:

DateTimeFormatInfo format;
format = (DateTimeFormatInfo)provider.GetFormat(typeof(DateTimeFormatInfo));
if (format != null)
   DoStuffWithDatesOrTimes(format);

내부 지식도 있습니다 IFormatProvider 인터페이스는 CultureInfo, 또는 내려갑니다 DateTimeFormatInfo, 따라서 인터페이스를 직접 캐스트 할 수 있습니다.

CultureInfo info = provider as CultureInfo;
if (info != null)
   format = info.DateTimeInfo;
else
{
   DateTimeFormatInfo dtfi = provider as DateTimeFormatInfo;
   if (dtfi != null)
       format = dtfi;
   else
       format = (DateTimeFormatInfo)provider.GetFormat(typeof(DateTimeFormatInfo));
}

if (format != null)
   DoStuffWithDatesOrTimes(format);

그러나 그렇게하지 마십시오

그 모든 노력은 이미 당신을 위해 작성되었습니다.

얻기 위해 DateTimeFormatInfo an IFormatProvider:

DateTimeFormatInfo format = DateTimeFormatInfo.GetInstance(provider);

얻기 위해 NumberFormatInfo an IFormatProvider:

NumberFormatInfo format = NumberFormatInfo.GetInstance(provider);

의 가치 IFormatProvider 자신만의 문화 객체를 만드는 것입니다. 그들이 구현하는 한 IFormatProvider, 그리고 그들이 요청한 물체를 반환하면 내장 문화를 우회 할 수 있습니다.

당신은 또한 사용할 수 있습니다 IFormatProvider 임의의 배양 물체를 통과하는 방법을 위해 IFormatProvider. 예를 들어 다른 문화에서 하나님의 이름

  • 하느님
  • 하나님
  • Jehova
  • 야웨
  • יהוה
  • אהיה אשר אהיה

이것은 당신의 관습을 허용합니다 LordsNameFormatInfo 내부를 따라 수업을 타십시오 IFormatProvider, 그리고 당신은 관용구를 보존 할 수 있습니다.

실제로 당신은 결코 전화 할 필요가 없습니다 GetFormat 의 방법 IFormatProvider 당신 자신.

필요할 때마다 IFormatProvider 당신은 통과 할 수 있습니다 CultureInfo 물체:

DateTime.Now.ToString(CultureInfo.CurrentCulture);

endTime.ToString(CultureInfo.InvariantCulture);

transactionID.toString(CultureInfo.CreateSpecificCulture("qps-ploc"));

메모: 모든 코드는 공개 도메인으로 릴리스됩니다. 귀속이 필요하지 않습니다.

Null을 전달합니다 IFormatProvider 이 작업을 수행하는 올바른 방법이 아닙니다. 사용자가 PC에 사용자 정의 날짜/시간 형식이 있으면 구문 분석 및 문자열로 변환하는 데 문제가 있습니다. 나는 문자열로 변환 할 때 누군가가 iformatprovider로 null을 통과 한 버그를 수정했습니다.

대신 사용해야합니다 CultureInfo.InvariantCulture

잘못된:

string output = theDate.ToString("dd/MM/yy HH:mm:ss.fff", null);

옳은:

string output = theDate.ToString("dd/MM/yy HH:mm:ss.fff", CultureInfo.InvariantCulture);

여기에서 볼 수 있습니다 http://msdn.microsoft.com/en-us/library/system.iformatprovider.aspx

여기에서 비고와 예제 섹션을 참조하십시오.

iformatprovider 해당 방법에 문화 정보를 제공합니다. dateTimeFormatInfo iformatprovider를 구현하고 날짜/시간을 표시하려는 형식을 지정할 수 있습니다. 예제는 관련 MSDN 페이지에서 찾을 수 있습니다.

에 의해 MSDN

.NET 프레임 워크에는 다음이 포함되어 있습니다 미리 정의 된 iforMatprovider 구현을 위해 숫자 및 날짜 및 시간 값을 형식화하거나 구문 분석하는 데 사용되는 문화 별 정보를 제공합니다.

  1. 그만큼 NumberFormatInfo 클래스는 특정 문화에 대한 통화, 수천 개의 분리기 및 소수 분리기 기호와 같은 숫자를 형식화하는 데 사용되는 정보를 제공합니다. 미리 정의 된 형식 문자열에 대한 정보는 NumberFormatInfo 객체 및 숫자 형식 작업에서 사용되는 표준 숫자 형식 문자열 및 사용자 정의 숫자 형식 문자열을 참조하십시오.
  2. 그만큼 DateTimeFormatInfo 클래스는 특정 문화의 날짜 및 시간 분리기 기호 또는 날짜의 연도, 월 및 일 구성 요소의 순서 및 형식과 같은 날짜와 시간을 형식화하는 데 사용되는 정보를 제공합니다. 미리 정의 된 형식 문자열에 대한 정보는 DateTimeFormatInfo 객체 및 숫자 형식 작업에서 사용되는 표준 날짜 및 시간 형식 문자열 및 사용자 정의 날짜 및 시간 형식 문자열을 참조하십시오.
  3. 그만큼 CultureInfo 특정 문화를 나타내는 클래스. 그것의 GetFormat 방법은 문화 별을 반환합니다 NumberFormatInfo 또는 DateTimeFormatInfo 객체, CultureInfo 객체는 숫자 또는 날짜 및 시간과 관련된 형식 또는 구문 분석 작업에 사용됩니다.

.NET 프레임 워크는 또한 사용자 정의 형식을 지원합니다. 여기에는 일반적으로 iformatprovider와 iCustomformatter를 모두 구현하는 서식 클래스의 생성이 포함됩니다. 그런 다음이 클래스의 인스턴스는 다음과 같은 사용자 정의 서식 작업을 수행하는 메소드로 매개 변수로 전달됩니다. String.Format(IFormatProvider, String, Object[]).

그만큼 dateTimeFormatInfo 클래스는이 인터페이스를 구현하므로 DateTime 문자열의 형식을 제어 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top