在Dart语言中,如何获取特定DateTime中的天数?
例如:
DateTime dateTime = DateTime(2017, 2, 1); //Feb 2017
如何获取dateTime在2017年2月的最大天数?
我的问题是关于DART语言的。
答案 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}");
}