如何获取特定月份的天数?

Ahm*_*mad 5 dart

在 Dart 语言中,如何获取特定月份的天数?

前任:

DateTime dateTime = DateTime(2017, 2, 1); //Feb 2017
Run Code Online (Sandbox Code Playgroud)

例如,如何获得 2017 年 2 月的最大天数?

我的问题是关于 Dart 语言。

Yan*_*n39 9

您可以使用具有该方法的date_utilslastDayOfMonth

添加依赖:

dev_dependencies:
    date_utils: ^0.1.0
Run Code Online (Sandbox Code Playgroud)

导入包:

import 'package:date_utils/date_utils.dart';
Run Code Online (Sandbox Code Playgroud)

然后使用它:

final DateTime date = new DateTime(2017, 2);
final DateTime lastDay = Utils.lastDayOfMonth(date);
print("Last day in month : ${lastDay.day}");
Run Code Online (Sandbox Code Playgroud)

结果 :

每月最后一天 : 28

如果您不想仅包含该功能的包,则定义如下:

/// The last day of a given month
static DateTime lastDayOfMonth(DateTime month) {
  var beginningNextMonth = (month.month < 12)
      ? new DateTime(month.year, month.month + 1, 1)
      : new DateTime(month.year + 1, 1, 1);
  return beginningNextMonth.subtract(new Duration(days: 1));
}
Run Code Online (Sandbox Code Playgroud)


rub*_*low 8

void main() {
  DateTime now = new DateTime.now();
  DateTime lastDayOfMonth = new DateTime(now.year, now.month+1, 0);
  print("N days: ${lastDayOfMonth.day}");
}
Run Code Online (Sandbox Code Playgroud)

来源

  • 对于那些像我一样乍一看不明白这一点的人,日期的月份和日期属性以 1 为索引,因此通过将日期设置为 0,它会将其视为上个月的最后一天。 (3认同)
  • 这应该是这个问题的答案。就巧妙地解决了。但警告,如果“now.month == 12”,“now.year”可能应该有“+1”和“now.month % 12” (2认同)
  • 现在(2020-06-23) Dart 将 13 个月转换为明年 1 月。 (2认同)