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

Nil*_*ngh 4 android datepicker flutter

我正在尝试从 flutter 的默认日期选择器小部件中获取日期,但是当我选择日期时,我有时间使用它。我只想要日期而不是时间。如果可能,& 还想更改日期格式。

这是我从某个地方的示例中使用的。

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;
      });
  }
Run Code Online (Sandbox Code Playgroud)

这是我获得字符串价值的地方。它打印为“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()),
                      )),
Run Code Online (Sandbox Code Playgroud)

想要这个“2019-04-16 12:18:06.018950”的日期,并改变日期显示的格式,如“dd-mm-yyyy”

这可能吗?

Neh*_*waj 10

我制作了自定义日期格式,您可以使用此代码,然后您将获得输出为: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;
    });
  }
Run Code Online (Sandbox Code Playgroud)

和 Inkwell 小部件是这样的

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

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

    ),
  ),
),
Run Code Online (Sandbox Code Playgroud)


小智 9

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

import 'package:intl/intl.dart';

DateFormat('dd-MM-yyyy').format(DateTime.now()); 
Run Code Online (Sandbox Code Playgroud)

更多详细信息请参见此处


Rob*_*ter 7

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

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

print (formattedDate);
Run Code Online (Sandbox Code Playgroud)

这将输出

16-4-2019
Run Code Online (Sandbox Code Playgroud)

这是官方文档