2014-09-01 3 views
2

좋아요, 그래서 나는 사용자가있을 수있는 모든 지역의 로케일에 표시해야하는 영국 형식 (dd/mm/yy)으로 저장된 날짜가 있습니다.로캘에서 날짜를 0 값으로 표시하는 방법은 무엇입니까?

이 날짜는 000000 (00/00/2000) 일 수 있습니다. DateTime은 날짜 또는 월의 0 값을 지원하지 않으므로 DateTime으로 직접 변환 할 수 없습니다.

나는이 지금까지 가지고

int dateInt = ddmmyy; 
var year = (dateInt % 100) + 2000; 
var month = (dateInt/100) % 100; 
var day = (dateInt/100000); 

var result = new DateTime(year, month, day); //2014/00/00 at this point, so breaks. 

var resultStr = result.ToString(CultureInfo.InvariantCulture); 
return resultStr; 

0 값을 처음에 대한 지원을 추가하는 올바른 방법은 무엇입니까? DateTime으로 변환하기 전에 0에서 1로 변경해 보았습니다. 변환을 실행 한 다음 다시 0으로 바꾸십시오. 그러나 문화 변이 때문에 나는이 방법이 다른 문화를 지원할 수있는 방법이 없다는 것을 알았습니다. 이것이이 변환의 목적입니다.

아이디어가 있으십니까? 나는 이것이 공통적 인 문제라고 생각한다.

+0

if (ddmmyy == 0) return new DateTime (2000,1,1); 첫 줄 이후 –

+1

@ GeeVovos 이것은 단지 하나의 사례입니다. 일반적인 해결책이 제공되어야합니다 .. –

+1

@ SonerGönül만이 000000이 유일한 무효 값이라는 것을 이해했습니다 –

답변

1

이것이 필요한가요?

using System; 

namespace ConsoleApplication2 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     int[] savedDates = new int[] { 000000, 010000, 000013 }; 

     foreach (var item in savedDates) 
     { 
      DateTime date = ConvertToDate(item); 
      Console.WriteLine(item.ToString("D6") + " => " + date.ToShortDateString()); 
     } 
     Console.ReadLine(); 
    } 

    private static DateTime ConvertToDate(int item) 
    { 
     string temp = item.ToString("D6"); 
     int day = int.Parse(temp.Substring(0, 2)); 
     int month = int.Parse(temp.Substring(2, 2)); 
     int year = int.Parse(temp.Substring(4, 2)); 

     if (day == 0) 
      day = 1; 

     if (month == 0) 
      month = 1; 

     year += 2000; 


     return new DateTime(year, month, day); 
    } 
} 
} 
+0

올바르게 작동하려면이 것과 비슷한 것을 사용했습니다. 도움을 주셔서 감사합니다. :-) – user3420034

0

이렇게하는 방법론이 .NET Framework에서 이미 제공되므로이 날짜는 저장하지 않을 것입니다.

날짜를 저장하는 가장 좋은 방법은 문자열 변환의 경우 Culture.InvariantCulture을 사용하고 필요에 따라 표시하기 위해 현지 문화로 변환하는 것입니다. DateTime 그 자체는 문화 독립적이므로 배양 물 사이의 변환은 매우 쉽습니다.

+0

불행히도 나는 날짜를 저장하는 시스템의 제작자가 아니므로 내가주는거야. :/ – user3420034

관련 문제