我想选择日期并以自定义格式(DD-MM-YYYY)打印。能够使用以下代码做到这一点。但是,当我从日期选择器中选择日期时,当前日期仍未显示所选择的日期。看来我的setState中有问题。但是我无法追踪。谁能帮忙。
import'package:checkboxtest / report.dart'; 导入'package:flutter / material.dart';
class Date extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
textTheme: TextTheme(body1: TextStyle(fontSize: 21))),
home: Home(),
);
}
}
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
DateTime _date = DateTime.now();
static var date1 = DateTime.now();
var customDate = "${date1.day}-${date1.month}-${date1.year}";
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(_date == null
? 'Today'
: "${date1.day.toString().padLeft(2, '0')}-${date1.month.toString().padLeft(2, '0')}-${date1.year.toString()}"),
RaisedButton.icon(
color: Colors.teal,
icon: Icon(Icons.calendar_today),
label: Text('Pick Date'),
onPressed: () {
showDatePicker(
context: context,
initialDate: _date == null ? DateTime.now() : _date,
firstDate: DateTime(2001),
lastDate: DateTime(2021))
.then((date) {
setState(() {
customDate =
"${date.day.toString().padLeft(2, '0')}-${date.month.toString().padLeft(2, '0')}-${date.year.toString()}";
});
});
},
),
],
),
),
);
}
}
答案 0 :(得分:0)
要格式化日期,可以使用dateFormatter 首先,创建日期格式化程序对象
DateFormat dateFormat = DateFormat("yyyy-MM-dd HH:mm:ss");
这是日期格式的示例,日期根据此格式显示,您可以在此处使用任何格式
yyyy-MM-dd HH:mm:ss
通过此链接检查格式 https://pub.dev/documentation/intl/latest/intl/DateFormat-class.html
之后,您需要解析要格式化的日期,以获取字符串中的日期
String string = dateFormat.format(DateTime.now());
使用parse获取字符串对象中的日期
DateTime dateTime = dateFormat.parse("2019-07-19 8:40:23");
答案 1 :(得分:0)
向日期添加格式的简单方法是在 DateFormat()
方法中传递自定义日期格式
DateFormat('dd/MMM/yy').format(DateTime.now())
以这种格式返回日期09/jun/21
或者您可以将 dd-MM-yyyy
日期格式传递给 DateFormat()
方法,它会返回 09-06-2021