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

时间:2019-12-22 07:45:30

标签: flutter

我想选择日期并以自定义格式(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()}";
                  });
                });
              },
            ),
           ],
        ),
      ),
    );
  }
}

2 个答案:

答案 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