2013-02-11 76 views

Trả lời

3

Dưới đây là một cách để tìm thấy nó:

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 

Tôi có ngày hiện tại, vì vậy tôi xây dựng ngày đầu tiên của tháng tiếp theo, và sau đó trừ một ngày ra khỏi nó. Tôi cũng đang tính đến sự thay đổi của năm.

Cập nhật: Đây là mã ngắn hơn một chút cho những điều tương tự, nhưng lấy cảm hứng từ Chris zero-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 

Nó có kiểm tra bổ sung/code, trong trường hợp bạn muốn làm điều này lập trình (ví dụ: bạn có một tháng cụ thể làm số nguyên).

+0

Lưu ý rằng trừ 1 ngày (= 24 giờ) sẽ không hoạt động nếu bạn là chính xác vào ngày nơi ánh sáng ban ngày -savings được tắt. Trong trường hợp này nó có thể không quan trọng vì ngày chuyển đổi không bao giờ (?) Vào ngày cuối cùng của tháng. –

+0

Bạn nói đúng. Và có ngày chuyển đổi vào ngày cuối cùng của một tháng. –

10

Cung cấp một giá trị ngày của zero cho tháng tiếp theo mang đến cho bạn ngày cuối cùng của tháng trước

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

Đây có phải là sử dụng hợp lý thực tế của DateTime không? Nếu có, chúng tôi có muốn cập nhật tài liệu cho DateTime không? –

+0

Gọn gàng. Tôi nhận ra rằng điều này vẫn như trong tương lai? –

+1

Có. đây là hành vi được bảo đảm. –

Các vấn đề liên quan