我正在尝试从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”
这可能吗?
答案 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