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

时间:2019-02-09 13:11:58

标签: dart

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

例如:

DateTime dateTime = DateTime(2017, 2, 1); //Feb 2017

如何获取dateTime在2017年2月的最大天数?

我的问题是关于DART语言的。

3 个答案:

答案 0 :(得分:1)

您可以使用具有lastDayOfMonth方法的date_utils软件包。

添加依赖项:

dev_dependencies:
    date_utils: ^0.1.0

导入程序包:

import 'package:date_utils/date_utils.dart';

然后使用它:

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

结果:

  

每月的最后一天: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));
}

答案 1 :(得分:0)

截至2019年10月,date_utils一年未更新,并且有错误。而是尝试使用calendarro软件包,它会定期更新并具有您所需要的内容。

按照上面的链接中的说明进行安装。实现看起来像这样:

DateTime lastDayOfMonth = DateUtils.getLastDayOfMonth(DateTime(fooYear, barMonth));
int lastDayOfMonthAsInt = lastDayOfMonth.day;

自己动手做:

int daysIn({int month, int forYear}){
  DateTime firstOfNextMonth;
  if(month == 12) {
    firstOfNextMonth = DateTime(forYear+1, 1, 1, 12);//year, month, day, hour
  }
  else {
    firstOfNextMonth = DateTime(forYear, month+1, 1, 12);
  }
  int numberOfDaysInMonth = firstOfNextMonth.subtract(Duration(days: 1)).day;
  //.subtract(Duration) returns a DateTime, .day gets the integer for the day of that DateTime
  return numberOfDaysInMonth;
}

如果需要日期时间,请根据需要进行修改。

答案 2 :(得分:0)

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

Source