Flutter 如何在Flatter中以自定义格式显示日期

Flutter 如何在Flatter中以自定义格式显示日期,flutter,Flutter,我想选择日期并以自定义格式(DD-MM-YYYY)打印它。我可以使用下面的代码来实现这一点。但是,当我从日期选择器中选择日期时,当前日期仍显示为非选择日期。我的状态似乎有问题。但我无法追踪它。谁能帮忙吗 导入“package:checkboxtest/report.dart”; 进口“包装:颤振/材料.省道” class Date extends StatelessWidget { @override Widget build(BuildContext context) { re

我想选择日期并以自定义格式(DD-MM-YYYY)打印它。我可以使用下面的代码来实现这一点。但是,当我从日期选择器中选择日期时,当前日期仍显示为非选择日期。我的状态似乎有问题。但我无法追踪它。谁能帮忙吗

导入“package:checkboxtest/report.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()}";
                  });
                });
              },
            ),
           ],
        ),
      ),
    );
  }
}
类日期扩展小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“颤振演示”,
主题:主题数据(
主样本:颜色。蓝色,
textTheme:textTheme(body1:TextStyle(fontSize:21)),
home:home(),
);
}
}
类Home扩展了StatefulWidget{
@凌驾
_HomeState createState()=>\u HomeState();
}
类(HomeState扩展状态){
DateTime _date=DateTime.now();
静态变量date1=DateTime.now();
var customDate=“${date1.day}-${date1.month}-${date1.year}”;
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:中(
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
文本(_date==null)
“今天”
:“${date1.day.toString().padLeft(2,'0')}-${date1.month.toString().padLeft(2,'0')}-${date1.year.toString()}”),
RaisedButton.icon(
颜色:Colors.teal,
图标:图标(今天的图标、日历),
标签:文本(“拾取日期”),
已按下:(){
showDatePicker(
上下文:上下文,
initialDate:\u date==null?DateTime.now():\u date,
firstDate:DateTime(2001年),
最后日期:日期时间(2021年))
.然后((日期){
设置状态(){
海关日期=
“${date.day.toString().padLeft(2,'0')}-${date.month.toString().padLeft(2,'0')}-${date.year.toString()}”;
});
});
},
),
],
),
),
);
}
}

要格式化日期,可以使用dateFormatter 首先,使您的日期格式化程序对象

DateFormat dateFormat = DateFormat("yyyy-MM-dd HH:mm:ss");
这是日期格式的一个示例。日期是根据此格式显示的。您可以在此处使用任何格式

yyyy-MM-dd HH:mm:ss
检查此链接中的格式

之后,您需要解析要格式化的日期,以获取字符串中的日期

String string = dateFormat.format(DateTime.now());
使用parse获取字符串对象中的日期

DateTime dateTime = dateFormat.parse("2019-07-19 8:40:23");

向日期添加格式的简单方法是在
DateFormat()
方法中传递自定义日期格式

DateFormat('dd/MMM/yy').format(DateTime.now())
以此格式返回日期
09/jun/21


或者您可以将
dd-MM-yyyy
日期格式传递到
DateFormat()
方法,它将返回
09-06-2021

仔细阅读官方文档这是否回答了您的问题?我能够按照我所需的格式分析日期。我的问题是设置状态。无法显示从日期选择器拾取的日期。请指定导入内置的intl程序包
import'package:intl/intl.dart'
以使用
DateFormat
类。