我正在尝试新的 Google Dart 语言,但我不知道如何获取当月的最后一天?
这给了我当前日期:
var now = new DateTime.now();
为下个月提供零天值会为您提供上个月的最后一天
var date = new DateTime(2013,3,0);
print(date.day); // 28 for February
以一种简单的方式试试这个:
DateTime now = DateTime.now();
int lastday = DateTime(now.year, now.month + 1, 0).day;
这是找到它的一种方法:
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
它有额外的检查/代码,以防您想以编程方式执行此操作(例如,您有一个特定的月份作为整数)。
这是一个可能有帮助的扩展。(参考 Kai 和 Chris 的回答。)
extension DateTimeExtension on DateTime {
DateTime get firstDayOfWeek => subtract(Duration(days: weekday - 1));
DateTime get lastDayOfWeek =>
add(Duration(days: DateTime.daysPerWeek - weekday));
DateTime get lastDayOfMonth =>
month < 12 ? DateTime(year, month + 1, 0) : DateTime(year + 1, 1, 0);
}