2013-02-11 8 views

Antwort

3

Hier ist eine Möglichkeit, es zu finden:

var now = new DateTime.now(); 

// Find the last day of the month. 
var beginningNextMonth = (now.month < 12) ? new DateTime(now.year, now.month + 1, 1) : new DateTime(now.year + 1, 1, 1); 
var lastDay = beginningNextMonth.subtract(new Duration(days: 1)).day; 

print(lastDay); // 28 for February 

ich das aktuelle Datum, so dass ich den ersten Tag des nächsten Monats konstruieren und dann subtrahiere einen Tag davon. Ich berücksichtige auch den Wechsel des Jahres.

Update: Hier ist ein wenig kürzer Code für die gleiche Sache, aber inspiriert von Chris Null-Trick:

var now = new DateTime.now(); 

// Find the last day of the month. 
var lastDayDateTime = (now.month < 12) ? new DateTime(now.year, now.month + 1, 0) : new DateTime(now.year + 1, 1, 0); 

print(lastDayDateTime.day); // 28 for February 

Es hat die zusätzliche Überprüfung/code, falls Sie dies programmatisch tun (zB haben Sie einen bestimmten Monat als Integer).

+0

Beachten Sie, dass 1 Tag subtrahiert (= 24 Stunden) würde nicht funktionieren, wenn Sie genau an dem Tag, wo Tageslicht -Savings ist deaktiviert. In diesem Fall spielt es wahrscheinlich keine Rolle, da die Switch-Tage am letzten Tag eines Monats nie (?) Sind. –

+0

Sie haben Recht. Und es gibt Switch-Tage am letzten Tag eines Monats. –

10

einen Tageswert von Null für den nächsten Monat Providing gibt Ihnen den letzten Tag des Vormonats

var date = new DateTime(2013,3,0); 
print(date.day); // 28 for February 
+0

Ist dies eine tatsächliche legitime Verwendung von DateTime? Wenn ja, möchten wir möglicherweise die Dokumentation für DateTime aktualisieren? –

+0

Ordentlich. Ich nehme an, dass dies so bleibt wie es ist in der Zukunft? –

+1

Ja. Das ist garantiertes Verhalten. –

Verwandte Themen