CultureInfo로 모든 언어의 

DateFormat, TimeFormat 알아내기



 Exchange에 타임존과 언어설정시 TimeFormat와 DateFormat 설정을 같이 해줘야 세팅이 되기 때문에 검색을 하였으나 구글리에서는 검색이 되지 않아 직접 파워쉘로 언어별로 세팅된 정보를 알아내 진행하다가 같이 프로젝트 하시는 이사님이 아래 코드를 보내 주셨다.


// 언어 리스트 가져오기
CultureInfo[] cinfo = CultureInfo.GetCultures(CultureTypes.AllCultures & ~CultureTypes.NeutralCultures);
 
// 언어 리스트
foreach (CultureInfo cul in cinfo)
{
    Console.WriteLine("Language={0}"cul.Name);
    Console.WriteLine("DateFormat={0}"cul.DateTimeFormat.ShortDatePattern);
    Console.WriteLine("TimeFormat={0}"cul.DateTimeFormat.ShortTimePattern);
    Console.WriteLine("----------------------");
}

[코드1] 모든 언어 객체를 가져와 DataFormate, TimeFormate 뿌려주기


 이 코드를 실행하면 아래와 같이 결과가 나온다.


Language=chr-Cher

DateFormat=M/d/yyyy

TimeFormat=h:mm tt

----------------------

Language=iu-Latn

DateFormat=d/MM/yyyy

TimeFormat=h:mm tt

----------------------

Language=tzm-Latn

DateFormat=dd-MM-yyyy

TimeFormat=H:mm

----------------------

Language=ff-Latn

DateFormat=dd/MM/yyyy

TimeFormat=HH:mm

----------------------

Language=ha-Latn

DateFormat=d/M/yyyy

TimeFormat=h:mm tt

----------------------

Language=ku-Arab

DateFormat=yyyy/MM/dd

TimeFormat=hh:mm tt

----------------------

[표1] 결과 화면


 이제 여기서 얻은 값으로 아래의 코드를 통해서 Exchange 2013에서 사용자의 타임존과 언어 설정을 할 수 있게 되었다.


// 파워쉘로 사용자 언어 설정 변경
using (var powershell = Injector.Current.GetInstance<IPowerShellWrapper>())
{
    var results = powershell.PipelineInvoke("Set-MailboxRegionalConfiguration",
        new Dictionary<stringobject>() 
        {
            { "Identity"ui.UserId },
            { "Language"ui.Language },
            { "TimeFormat"ui.TimeFormat },
            { "DateFormat"ui.DateFormat } 
        });
 
    result.ResultState = true;
}

[코드2] Exchange 2013에서 파워쉘로 타임존과 언어설정 코드






+ Recent posts