2013-08-29 11 views
10

Zastanawiam się, dlaczego nie ma .ToShortDateString w .NET Portable Class Library. Mam 2 projekty (Silverlight i regularne biblioteki klasy .NET), które używają tego samego kodu, a kod obejmuje wywołanie .ToShortDateString() na obiekcie DateTime. Aby ponownie użyć tego samego kodu zamiast jego kopiowania w 2 miejscach, utworzyłem przenośną bibliotekę klas, która może być zaimportowana przez biblioteki Silverlight i .NET Class. Niestety nie wygląda na to, że dostępna jest biblioteka .ToShortDateString(). Mogę zaakceptować parametr łańcuchowy w przenośnej bibliotece klas i przekazać wartość .ToShortDateString() zarówno z projektów bibliotek Silverlight, jak i bibliotek klasowych, ale zastanawiam się, dlaczego ta metoda nie jest natywna dla biblioteki przenośnej. Czy to jest problem kulturowy?Co się stało z .ToShortDateString w .NET Portable Class Library

+5

Domyślam się, że PCL jest mały i ponieważ wciąż można wykonać 'ToString (" d ")'. – cadrell0

+0

Dziękuję za pomoc! – Misha

Odpowiedz

4

Podczas gdy większość metod/właściwości należących do typów zdefiniowanych w przestrzeni nazw Systemu są dostępne w PCL, istnieją pewne wyjątki, a ToShortDateString jest jednym z nich. Poniżej znajduje się lista przenośnych członków DateTime. Nie wiem, co było przyczyną wyłączenia niektórych metod konwersji łańcuchów, ale myślę, że wynika to z nadmiarowości. Jak zauważył cadrell0, zawsze możesz osiągnąć to samo, używając ToString z parametrem.

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

Została usunięta do deemphasize jego stosowanie od tego, co uważamy za „nowoczesne” powierzchnię, co ja tu o wskazówkę (What is .NET Portable Subset (Legacy)?). Oznacza to, że nie wyświetla nowszych platform (takich jak aplikacje Windows Store) i nie wyświetla się w przenośnych bibliotekach.

Możesz naśladować jego zachowanie, po prostu przekazując "d" do DateTime.ToString().

Chcieliśmy zdematyzować jego użycie, ponieważ jest to jedyny format daty .NET Framework, który nie ma reprezentacji na poziomie systemu operacyjnego Windows. Powoduje to, że nie odzwierciedla/nie przestrzega zmian formatowania wprowadzonych przez użytkownika. W niektórych organizacjach i rządach ważne jest przestrzeganie tych ustawień.

+1

Jeśli to był jedyny, który został usunięty, to jaka jest historia, dlaczego 'ToShortTimeString' został usunięty? (A jaki jest ciąg znaków.Format, którego powinniśmy użyć, aby go zastąpić?) – BrainSlugs83