2013-08-29 3 views
10

Мне интересно, почему нет .ToShortDateString в .NET Portable Class Library. У меня есть 2 проекта (Silverlight, и обычная библиотека классов .NET), которые используют один и тот же код, а код включает вызов объекта DateTime. Чтобы повторно использовать один и тот же код вместо копирования в 2-х местах, я создал переносимую библиотеку классов, чтобы он мог быть импортирован как библиотекой классов Silverlight, так и .NET. К сожалению, не похоже, что .ToShortDateString() доступен при использовании библиотеки классов. Я могу принять строковый параметр в методе переносной библиотеки классов и передать значение .ToShortDateString() как из проектов silverlight, так и из библиотеки классов, но мне интересно, почему этот метод не является родным для переносимой библиотеки. Это проблема культуры?Что случилось с .ToShortDateString в .NET Portable Class Library

+5

Моя догадка заключается в том, чтобы держать PCL маленьким и потому что вы все еще можете использовать 'ToString (" d ")'. – cadrell0

+0

Благодарим за помощь! – Misha

ответ

4

Хотя большинство методов/свойств, относящихся к типам, определенным в пространстве имен System, доступно в PCL, есть некоторые исключения, и ToShortDateString является одним из них. Ниже приведен список переносимых членов DateTime. Я не знаю, в чем причина исключения некоторых методов преобразования строк, но я предполагаю, что это связано с избыточностью. Как указывал cadrell0, вы всегда можете добиться того же, используя ToString с параметром.

T:System.DateTime 
M:System.DateTime.ToString(System.String) 
M:System.DateTime.op_GreaterThan(System.DateTime,System.DateTime) 
M:System.DateTime.ParseExact(System.String,System.String[],System.IFormatProvider,System.Globalization.DateTimeStyles) 
M:System.DateTime.get_Month 
M:System.DateTime.FromFileTimeUtc(System.Int64) 
M:System.DateTime.get_Date 
M:System.DateTime.get_TimeOfDay 
M:System.DateTime.get_Kind 
M:System.DateTime.ToUniversalTime 
M:System.DateTime.get_Year 
M:System.DateTime.op_Subtraction(System.DateTime,System.TimeSpan) 
M:System.DateTime.get_Second 
M:System.DateTime.get_DayOfWeek 
M:System.DateTime.TryParse(System.String,System.IFormatProvider,System.Globalization.DateTimeStyles,[email protected]) 
M:System.DateTime.#ctor(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32) 
M:System.DateTime.get_Day 
P:System.DateTime.Date 
M:System.DateTime.op_Addition(System.DateTime,System.TimeSpan) 
M:System.DateTime.IsDaylightSavingTime 
M:System.DateTime.get_DayOfYear 
M:System.DateTime.ToFileTime 
M:System.DateTime.Subtract(System.DateTime) 
M:System.DateTime.IsLeapYear(System.Int32) 
M:System.DateTime.#ctor(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.DateTimeKind) 
M:System.DateTime.ParseExact(System.String,System.String,System.IFormatProvider,System.Globalization.DateTimeStyles) 
P:System.DateTime.Day 
M:System.DateTime.get_Hour 
M:System.DateTime.Equals(System.DateTime) 
M:System.DateTime.get_UtcNow 
M:System.DateTime.get_Today 
M:System.DateTime.TryParse(System.String,[email protected]) 
P:System.DateTime.Kind 
M:System.DateTime.System#IComparable#CompareTo(System.Object) 
P:System.DateTime.UtcNow 
P:System.DateTime.Hour 
P:System.DateTime.Millisecond 
M:System.DateTime.Parse(System.String) 
F:System.DateTime.MinValue 
M:System.DateTime.op_GreaterThanOrEqual(System.DateTime,System.DateTime) 
M:System.DateTime.#ctor(System.Int64,System.DateTimeKind) 
M:System.DateTime.GetHashCode 
P:System.DateTime.Year 
M:System.DateTime.Add(System.TimeSpan) 
M:System.DateTime.Equals(System.DateTime,System.DateTime) 
M:System.DateTime.ToString(System.IFormatProvider) 
M:System.DateTime.get_Now 
P:System.DateTime.Month 
M:System.DateTime.DaysInMonth(System.Int32,System.Int32) 
M:System.DateTime.AddMinutes(System.Double) 
M:System.DateTime.get_Minute 
M:System.DateTime.#ctor(System.Int64) 
M:System.DateTime.op_LessThanOrEqual(System.DateTime,System.DateTime) 
M:System.DateTime.ToString(System.String,System.IFormatProvider) 
P:System.DateTime.DayOfYear 
M:System.DateTime.AddMilliseconds(System.Double) 
P:System.DateTime.Second 
P:System.DateTime.DayOfWeek 
M:System.DateTime.op_Equality(System.DateTime,System.DateTime) 
M:System.DateTime.#ctor(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32) 
M:System.DateTime.TryParseExact(System.String,System.String,System.IFormatProvider,System.Globalization.DateTimeStyles,[email protected]) 
M:System.DateTime.ToFileTimeUtc 
P:System.DateTime.Today 
M:System.DateTime.op_LessThan(System.DateTime,System.DateTime) 
M:System.DateTime.get_Millisecond 
M:System.DateTime.op_Subtraction(System.DateTime,System.DateTime) 
M:System.DateTime.#ctor(System.Int32,System.Int32,System.Int32) 
M:System.DateTime.ParseExact(System.String,System.String,System.IFormatProvider) 
M:System.DateTime.AddSeconds(System.Double) 
M:System.DateTime.AddMonths(System.Int32) 
M:System.DateTime.AddYears(System.Int32) 
M:System.DateTime.Parse(System.String,System.IFormatProvider,System.Globalization.DateTimeStyles) 
M:System.DateTime.get_Ticks 
P:System.DateTime.Ticks 
M:System.DateTime.TryParseExact(System.String,System.String[],System.IFormatProvider,System.Globalization.DateTimeStyles,[email protected]) 
M:System.DateTime.ToLocalTime 
M:System.DateTime.op_Inequality(System.DateTime,System.DateTime) 
M:System.DateTime.SpecifyKind(System.DateTime,System.DateTimeKind) 
M:System.DateTime.AddHours(System.Double) 
P:System.DateTime.Minute 
M:System.DateTime.Subtract(System.TimeSpan) 
M:System.DateTime.#ctor(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.DateTimeKind) 
F:System.DateTime.MaxValue 
M:System.DateTime.ToString 
M:System.DateTime.FromFileTime(System.Int64) 
P:System.DateTime.TimeOfDay 
M:System.DateTime.Compare(System.DateTime,System.DateTime) 
M:System.DateTime.CompareTo(System.DateTime) 
M:System.DateTime.Parse(System.String,System.IFormatProvider) 
M:System.DateTime.AddDays(System.Double) 
P:System.DateTime.Now 
M:System.DateTime.Equals(System.Object) 
M:System.DateTime.AddTicks(System.Int64) 
6

Она была удалена, чтобы ослаблять его использование от того, что мы будем рассматривать «современную» площадь поверхности, которую я намекнуть о здесь (What is .NET Portable Subset (Legacy)?). Это означает, что он не отображает новые платформы (например, приложения Windows Store) и не отображается в портативных библиотеках.

Вы можете имитировать свое поведение, просто передав «d» в DateTime.ToString().

Мы хотели подчеркнуть его использование, потому что это единственный формат даты .NET Framework, который не имеет представления на уровне ОС Windows. Это заставляет его не отражать/не учитывать изменения форматирования, сделанные пользователем. В некоторых организациях и правительствах важно, чтобы эти настройки соблюдались.

+1

Если это был единственный, который был удален, то почему история «ToShortTimeString» была удалена? (И что такое string.Format, который мы должны использовать для его замены?) – BrainSlugs83

Смежные вопросы