你好,我有这种格式的日期示例:2019年6月4日
DateTime now = DateTime.now();
formattedDate = DateFormat.yMMMMd("fr_FR").format(now);
我现在尝试在按下按钮后增加或减少几天,但是先前的代码与:不兼容:
var newDate= now.add(new Duration(days: changedate));
答案 0 :(得分:2)
首先:定义格式器:
final _dateFormatter = DateFormat.yMMMMd("fr_FR");
然后,您需要一种可以接收日期和天数的方法(正数会增加天数,负数会减少天数):
DateTime changeDate(DateTime dtObj, int numberOfDays) {
return dtObj.add(Duration(days: numberOfDays));
}
然后,当您需要显示日期时,可以对其进行格式化:
String formattedDate = _dateFormatter.format(previouslyChangedDate);
print(formattedDate); //prints as: 4 juin 2019
答案 1 :(得分:0)
一天的增减可以通过DateTime
类
初始化需要显示的DateFormat
var _inputFormat = DateFormat('EE, d MMM yyyy');
var _selectedDate = DateTime.now();
代码:
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Container(
height: 40,
padding: EdgeInsets.symmetric(horizontal: 8),
margin: EdgeInsets.symmetric(horizontal: 18),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8),
color: Colors.blue,
),
child: Row(
children: [
InkWell(
onTap: () {
_selectedDate = DateTime(_selectedDate.year,
_selectedDate.month, _selectedDate.day - 1);
setState(() {});
},
child: Icon(Icons.exposure_minus_1_sharp),
),
const Spacer(),
Text(
_inputFormat.format(_selectedDate),
),
Spacer(),
InkWell(
onTap: () {
_selectedDate = DateTime(_selectedDate.year,
_selectedDate.month, _selectedDate.day + 1);
print(_inputFormat.format(_selectedDate));
setState(() {});
},
child: Icon(Icons.plus_one),
),
],
)),
),
);
输出: