요일을 2 자로 변환하는 DateTimeFormatInfo
형식 패턴이 있습니까? 예를 들어 화요일은 화요일이되고 수요일은 우리가됩니다. 형식 문자열은 날짜 형식의 경우 DateTimeFormatInfo
을 준수해야합니다.요일의 DateTimeFormatInfo 문자열 형식입니다. 목요일이 Th가됩니다
추가 :
은 아마 사용자 정의 형식을 포함 DateTimeFormatInfo
을 확장 할 수있는 솔루션을 찾고 있어요?
요일을 2 자로 변환하는 DateTimeFormatInfo
형식 패턴이 있습니까? 예를 들어 화요일은 화요일이되고 수요일은 우리가됩니다. 형식 문자열은 날짜 형식의 경우 DateTimeFormatInfo
을 준수해야합니다.요일의 DateTimeFormatInfo 문자열 형식입니다. 목요일이 Th가됩니다
추가 :
은 아마 사용자 정의 형식을 포함 DateTimeFormatInfo
을 확장 할 수있는 솔루션을 찾고 있어요?
당신이 얻을 수있는 마감은 "ddd"
custom format specifier입니다. 이것은 세 글자로 된 약어를 생성하므로 정확하게 원하는 것은 아닙니다. 당신이 원하는 것을 정확하게하는 것은 없습니다.
당신은 항상의 처음 두 문자를 취할 수 있습니다 : 그것은 sealed
로 선언되어 있기 때문에
DateTime.Now.ToString("ddd").Substring(0,2);
불행하게도 당신이
DateTimeFormatInfo
을 확장 할 수 없습니다.
사용중인 구성 요소가 형식 패턴을 예상하고 있습니다. –
@Tony_Henrich - "ddd"_ datetimes의 형식 패턴입니다. – Oded
알아 두지 만 내가 원하는 것처럼 그것은 두 인물이 아니다. –
이
그것이 FormatPattern 할 필요가있는 경우string s = DateVar.ToString("ddd").SubString(0,2);
,이 시도하려고 :
var dtFI = new CultureInfo("en-US", false).DateTimeFormat;
dtFI.DayNames = new[] {"Mo", "Tu", "We", "Th", "Fr", "Sa", "Su" };
string s = DateVar.ToString("ddd", dtFI);
형식 패턴이어야합니다. –
특별히 DateTimeFormatInfo를 사용하려면 수 그러나 "DDD"
dtfi.GetShortestDayName(DateTime.Now.DayOfWeek);
문자열 형식에 가장 근접한 문자입니다.
작업하려는 문화권의 DateTimeFormatInfo
을 가져온 다음 AbbreviatedDayNames
이라는 문자열 배열을 수정해야합니다. 그 후에 ddd
은 Th
을 반환합니다.
그것을 수행하는 방법의 예입니다 : CurrentCulture에이
가져 DateTimeFormatInfo.AbbreviatedDayNames 또는 주 일의 배양 특정 약어 이름을 포함하는 입력 문자열의 1 차원 배열 를 설정한다.class Program { static void Main() { var dtInfo = new System.Globalization.DateTimeFormatInfo(); Console.WriteLine("Old array of abbreviated dates:"); var dt = DateTime.Today; for (int i = 0; i < 7; i++) { Console.WriteLine(dt.AddDays(i).ToString("ddd", dtInfo)); } // change the short weekday names array var newWeekDays = new string[] { "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa" }; dtInfo.AbbreviatedDayNames = newWeekDays; Console.WriteLine("New array of abbreviated dates:"); for (int i = 0; i < 7; i++) { Console.WriteLine(dt.AddDays(i).ToString("ddd", dtInfo)); } Console.ReadLine(); } }
하나 더 참고 : 당신이
IFormatProvider
를 제공하는 것을 제한하는 경우 물론, 당신은 현재의 thread의CultureInfo
을 대체 할 수 있습니다, 예를 들어 여기에
CultureInfo customCulture = CultureInfo.CreateSpecificCulture("en-US");
// ... set up the DateTimeFormatInfo, etc...
System.Threading.Thread.CurrentThread.CurrentCulture = customCulture;
더 :
http://msdn.microsoft.com/en-us/library/system.threading.thread.currentuiculture.aspx
Thread.CurrentUICulture 재산권
가져 런타임에 문화권 별 자원을 찾기 위해 자원 관리자에 의해 사용되는 현재 문화권을 설정합니다.
나는 이것을 언급하는 것을 잊어 버렸지 만, 당신이 DateTimeInfo의 새로운 인스턴스를 만들 때마다, 그 인스턴스는 불변의 문화권에서 만들어 졌으므로 이것을 명심하십시오. 물론 DateTimeInfo를 완전히 커스터마이징하려고한다면 이것은 논점이됩니다. – code4life
dt.AddDays (i) .ToString ("ddd", dtInfo)은 더 이상 사용되지 않습니다. dtInfo.GetDayName (dt.DayOfWeek)이 작동해야합니다. – Joshcodes
@Joshcodes : "Th"가 아니라 "Thursday"가 나옵니다. 여기서 내가하는 일은 기본 단축 된 요일 이름을 대체 한 다음 호출하는 것입니다. 당신이하고있는 일은 생략되지 않은 전체 요일 이름을 사용하고 있습니다. – code4life
AbbreviatedDayNames의 내 게시물을 확인하십시오. – code4life