2017-11-07 2 views
0

를 얻을 수 있습니다변환 문자열은 내가 문자열이 날짜를 월 약식

var newDate = DateTime.ParseExact(dateString, "MMM", CultureInfo.InvariantCulture); 

그러나 나는이 오류를 얻을 : 9월

는 그래서 같은 날짜 시간으로 변환하려고했습니다

String was not recognized as a valid DateTime.

누구나 내가 짧은 문자열을 문자열에서 얻을 수있는 방법을 알고 있습니까?

+0

'var shortMonth = "9 월";'내가 더 많은 데이터없이 당신을 줄 수있는 최고입니다. –

답변

0

문자열과 형식이 분명히 일치하지 않습니다. 그래서 예외가 생깁니다.

당신 사용 dddd, MMMM dd'th'하고 문자열 연도 부분을 가지고 있지 않기 때문에, 그것은 년으로 (그리고 때문에 2017 16 대 9 월 토요일은) 2017로 해석 될 것이다.

var newDate = DateTime.ParseExact("Saturday, September 16th", 
            "dddd, MMMM dd'th'", 
            CultureInfo.InvariantCulture); 

그러나 결과로 Sept를 공급에는 사용자 지정 날짜 형식이 없습니다. 그 결과로 abbreviated month genitive name 또는 abbreviated month name가 반환 Sep입니다.

당신은하지 그것이 MMMM specifier와 이름 그리고 그것은이 string.Substring 방법으로 처음 4 캐릭터의 유지 생성 이외의 너무 많은 옵션이 할 .

newDate.ToString("MMMM", CultureInfo.InvariantCulture).Substring(0, 4) 
+0

@Downvoters는 적어도 코멘트 할 수 있도록 신경 쓰고 있습니다. –

0

좀 더 이런 식으로 뭔가를 시도 할 수 있습니다 :

var dateString = "Saturday, September 16, 2017"; 
DateTime dt = new DateTime(); 
string dateFormat = "MMM"; 
DateTime.TryParse(dateString, out dt); 

을 그런 다음 달에 표시 할 때 호출 할 수 있습니다

dt.ToString(dateFormat, CultureInfo.InvariantCulture); 
+0

결과로 'Sept'을 생성하는 _no_ custom이 있습니다. 그리고이 문자열은 OP와 동일한 문자열이 아닙니다. –

+0

알다시피, DateTime은 지정되지 않은 경우 현재 연도로 파싱됩니다. 당신은 맞습니다. "Sept"을 생성 할 월 형식이 없으므로 DateTime을 사용하려면 "9 월"이라는 약어 만 사용할 수 있습니다. 그렇지 않으면 그는 "Sept"에 문자열 리터럴을 사용할 수 있습니다. –

0

을 날짜가 일치에 있기 때문에 형식을 사용하면 비표준 약어를 다시 얻으려는 것과 결합하여 다음과 같이 조회 표의 일종으로 제공하는 함수를 만드는 것이 좋습니다.

private string GetMonthAbbr(string date) 
{ 
    string[] longMonths = new string[] {"january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december"}; 
    string[] shortMonths = new string[] {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; 

    for (int i=0;i<longMonths.Length;i++) 
    { 
     if (date.ToLower().Contains(" " + longMonths[i] + " ")) 
     { 
      return shortMonths[i]; 
     } 
    } 

    return ""; 
} 

shortMonths에는 원하는 약어를 포함 할 수 있습니다.

관련 문제