2013-08-29 15 views
10

Ich frage mich, warum gibt es keine .ToShortDateString in der .NET Portable Class Library. Ich habe 2 Projekte (Silverlight und reguläre .NET-Klassenbibliothek), die denselben Code verwenden, und der Code umfasst das Aufrufen von .ToShortDateString() auf einem DateTime-Objekt. Um denselben Code wiederzuverwenden, anstatt ihn an zwei Stellen zu kopieren, habe ich eine portable Klassenbibliothek erstellt, die sowohl von Silverlight als auch von der .NET-Klassenbibliothek importiert werden kann. Leider scheint .ToShortDateString() bei Verwendung der Klassenbibliothek nicht verfügbar zu sein. Ich kann einen String-Parameter in der Portable Class Library-Methode akzeptieren und den .ToShortDateString()-Wert sowohl von Silverlight- als auch von Klassenbibliotheksprojekten übergeben, aber ich frage mich, warum diese Methode für die portable Bibliothek nicht nativ ist. Ist es ein Kulturproblem?Was passiert mit .ToShortDateString in. NET Portable Class Library

+5

Meine Vermutung ist, die PCL klein zu halten und weil Sie immer noch 'ToString (" d ")' tun können. – cadrell0

+0

Vielen Dank für Ihre Hilfe! – Misha

Antwort

4

Während die meisten Methoden/Eigenschaften, die zu den im System-Namespace definierten Typen gehören, in PCLs verfügbar sind, gibt es einige Ausnahmen, und ToShortDateString ist einer davon. Unten ist die Liste der tragbaren DateTime-Mitglieder. Ich weiß nicht, was der Grund für den Ausschluss einiger String-Konvertierungsmethoden war, aber ich vermute, dass dies auf Redundanz zurückzuführen ist. Wie von cadrell0 gezeigt, können Sie immer dasselbe erreichen, indem Sie ToString mit einem Parameter verwenden.

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

wurde es entfernt von seiner Verwendung deemphasize, was wir die „moderne“ Oberfläche betrachten, die ich hier (What is .NET Portable Subset (Legacy)?) andeuten. Dies bedeutet, dass neuere Plattformen (z. B. Windows Store-Apps) nicht angezeigt werden und nicht in tragbaren Bibliotheken angezeigt werden.

Sie können ihr Verhalten nachahmen, indem Sie einfach "d" an DateTime.ToString() übergeben.

Wir wollten seine Verwendung deaktivieren, da es das einzige .NET Framework-Datumsformat ist, das keine Darstellung auf Windows-Betriebssystemebene aufweist. Dadurch werden die vom Benutzer vorgenommenen Formatierungsänderungen nicht berücksichtigt. In bestimmten Organisationen und Regierungen ist es wichtig, dass diese Einstellungen respektiert werden.

+1

Wenn es der einzige war, der entfernt wurde, was ist die Geschichte dahinter, warum 'ToShortTimeString' entfernt wurde? (Und was ist der String.Format, dass wir verwenden sollten, um es zu ersetzen?) – BrainSlugs83