如何删除时间戳或仅在颤振默认日期选择器中获取日期形式的日期选择器?

时间:2019-04-16 06:53:48

标签: android flutter datepicker

我正在尝试从flutter的默认datepicker小部件中获取日期,但是当我选择日期时,就会有时间。 我只想要日期而不是时间。 &还希望更改日期格式。

这是我在某处示例中使用的。

DateTime selectedDate = DateTime.now();

Future<Null> _selectDate(BuildContext context) async {
    final DateTime picked = await showDatePicker(
        context: context,
        initialDate: selectedDate,
        firstDate: DateTime(2019),
        lastDate: DateTime(2020));
    if (picked != null && picked != selectedDate)
      setState(() {
        selectedDate = picked;
      });
  }



This is where I am getting value to string.
It prints like "2019-04-16 12:18:06.018950"

child: FlatButton(
                        materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
                        onPressed: () {
                          _selectDate(context);
                          print("Selected Date = $selectedDate");
                        },
                        child: Text(selectedDate == null
                            ? "Select Date"
                            : selectedDate.toString()),
                      )),

我只想要此“ 2019-04-16 12:18:06.018950”中的日期,并且还更改显示日期的格式,例如“ dd-mm-yyyy”

这可能吗?

3 个答案:

答案 0 :(得分:2)

我制作了Custom DateFormat,可以使用此代码,然后将得到以下输出: 16-04-2019

TextEditingController _datecontroller = new TextEditingController();

        var myFormat = DateFormat('d-MM-yyyy');

        Future<void> _selectDate(BuildContext context) async {
            final DateTime picked = await showDatePicker(
                context: context,
                initialDate: date,
                firstDate: DateTime(2015, 8),
                lastDate: DateTime(2101));
            setState(() {
              date = picked ?? date;
            });
          }

        InkWell(
                            onTap: () => _selectDate(context),
                            child: IgnorePointer(
                              child: TextField(
                                controller: _datecontroller,
                                decoration: InputDecoration(

                                  hintText: ('${myFormat.format(date)}'),
                                ),

                              ),
                            ),
                          ),

答案 1 :(得分:0)

您可以使用DateTime类。 只需解析您的String并作为属性访问各个部分。

var date = DateTime.parse("2019-04-16 12:18:06.018950");
var formattedDate = "${date.day}-${date.month}-${date.year}";

print (formattedDate);

这将输出

16-4-2019

这是官方的documentation

答案 2 :(得分:0)

您也可以使用 intl 包中的 DateFormat 类。

import 'package:intl/intl.dart';

DateFormat("dd-MM-yyyy").format(DateTime.now()); 

此处有更多详细信息:https://api.flutter.dev/flutter/intl/DateFormat-class.html