如何找到月份的最后一天?

时间:2013-02-11 15:10:58

标签: dart

我正在尝试新的Google Dart语言而且我不知道如何获得当月的最新一天?

这给了我当前的日期:

var now = new DateTime.now();

4 个答案:

答案 0 :(得分:22)

为下个月提供零日值会为您提供上个月的最后一天

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

答案 1 :(得分:5)

这是找到它的一种方法:

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

我有当前日期,所以我构建了下个月的第一天,然后从中减去一天。我也考虑了今年的变化。

更新:这是同样的事情的一些简短的代码,但灵感来自Chris的零技巧:

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

如果您想以编程方式执行此操作(例如,您将特定月份作为整数),则它具有附加检查/代码。

答案 2 :(得分:1)

轻松尝试:

DateTime now = DateTime.now();
int lastday = DateTime(now.year, now.month + 1, 0).day;

答案 3 :(得分:0)

另一种方法是使用Jiffy。它具有endOf方法,可轻松获取多个单位的最后一刻,在本例中为月份:

Jiffy().endOf(Units.MONTH);