2013-02-11 30 views

cevap

3

şu şekilde bulabilirsiniz tek yolu şudur:

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 

ben geçerli tarih var, bu yüzden bir sonraki ayın ilk günü inşa ve bir gün çıkarmak. Ayrıca yılın değişimini de dikkate alıyorum.

Güncelleme: İşte biraz daha kısa aynı şey için kod ancak Chris'in sıfır hile esinlenerek verilmiştir:

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 

Bu durumda, ek onay/koduna sahip programlı yapmak istiyor (örn. tamsayı olarak belirli bir ayınız var). Bir sonraki ay için sıfır gün değerin sağlanması

+0

Not verir -Savings kapalı. Bu durumda anahtar günlerinin bir ayın son günü hiçbir zaman (?) Olmadığından önemli değildir. –

+0

Haklısınız. Ve bir ayın son gününde geçiş günleri var. –

10

nereye gün ışığı tarihte tam olarak eğer 1 gün çıkarılarak (= 24 saat) işe yaramaz olduğunu önceki ayın son günü size

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

Bu, DateTime'ın gerçek bir meşru kullanımı mı? Öyleyse, DateTime belgelerini güncellemek ister miyiz? –

+0

Temiz. Gelecekte olduğu gibi duruyor mu? –

+1

Evet. Bu garantili bir davranış. –

İlgili konular