如何消除 DateFormat Flutter 中的秒数
Posted
技术标签:
【中文标题】如何消除 DateFormat Flutter 中的秒数【英文标题】:How to eliminate seconds in DateFormat Flutter 【发布时间】:2021-03-28 03:47:58 【问题描述】:点击按钮后,我试图在文本小部件中显示当前日期时间。以下工作,但我想更改格式。
我试图从 DateFormat 字符串中删除毫秒,但它似乎不起作用,因为它们无论如何都会被渲染 当前方法
DateFormat dateFormat = DateFormat("yyyy-MM-dd HH:mm");
CalendarClient calendarClient = CalendarClient();
DateTime startTime = DateTime.now();
DateTime endTime = DateTime.now().add(Duration(days: 1));
TextEditingController _eventName = TextEditingController();
return Center(
child: Container(
color: Colors.black,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Row(
children: <Widget>[
FlatButton(
onPressed: ()
DatePicker.showDateTimePicker(context, showTitleActions: true, minTime: DateTime.now(), maxTime: DateTime(2222, 6, 7), onChanged: (date)
print('change $date');
, onConfirm: (date)
setState(()
this.startTime = date;
print('start time $date');
);
, currentTime: DateTime.now(), locale: LocaleType.en);
,
child: Text(
'Event Start Time',
style: TextStyle(color: Colors.white, fontSize: 18),
)),
Text(
'$startTime',
style: TextStyle(color: Colors.redAccent, fontSize: 18),
),
],
),
SizedBox(
height: 20,
),
Row(
children: <Widget>[
FlatButton(
onPressed: ()
DatePicker.showDateTimePicker(context, showTitleActions: true, minTime: DateTime(2019, 3, 5), maxTime: DateTime(2200, 6, 7),
onChanged: (date)
print('end time $date');
, onConfirm: (date)
setState(()
this.endTime = date;
);
, currentTime: DateTime.now(), locale: LocaleType.en);
,
child: Text(
'Event End Time',
style: TextStyle(color: Colors.white, fontSize: 18),
)),
Text(
'$endTime',
style: TextStyle(color: Colors.redAccent, fontSize: 18),
),
],
),
SizedBox(
height: 20,
),
Container(
width: 250,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(40)), border: Border.all(width: 3, color: Colors.redAccent, style: BorderStyle.solid)),
padding: EdgeInsets.all(5.0),
child: TextField(
style: TextStyle(color: Colors.white),
textAlign: TextAlign.center,
textInputAction: TextInputAction.send,
controller: _eventName,
decoration: InputDecoration(
enabledBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.transparent),
),
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.transparent),
),
prefixIcon: Icon(
Icons.event,
color: Colors.redAccent,
),
hintText: 'Enter Event title',
hintStyle: TextStyle(color: Colors.redAccent, fontSize: 18),
),
cursorColor: Colors.redAccent,
cursorRadius: Radius.circular(16.0),
cursorWidth: 16.0,
),
),
SizedBox(
height: 20,
),
RaisedButton(
child: Text(
'Insert Event',
style: TextStyle(color: Colors.black, fontSize: 20),
),
color: Colors.redAccent,
onPressed: ()
calendarClient.insert(
_eventName.text,
startTime,
endTime,
);
),
],
),
),
);
结果
YYYY-MM-JJ HH-MM:00.000
问题
如何删除 :00.000 部分?
【问题讨论】:
【参考方案1】:您有 dateFormat
属性但没有使用它来格式化日期时间
应该是
print('start time $dateFormat.format(date)');
和
Text(
'$dateFormat.format(startTime)',
style: TextStyle(color: Colors.redAccent, fontSize: 18),
),
【讨论】:
【参考方案2】:改变
DateFormat dateFormat = DateFormat("yyyy-MM-dd HH:mm:ss");
到
DateFormat dateFormat = DateFormat("yyyy-MM-dd HH:mm");
【讨论】:
【参考方案3】:您可以使用intl: ^0.16.1 为了更好地分割您的日期和时间,如果您想使用日期、星期名称或其他可以轻松管理的格式。
【讨论】:
我使用的是最新版本的包以上是关于如何消除 DateFormat Flutter 中的秒数的主要内容,如果未能解决你的问题,请参考以下文章
如何在flutter中实现日历功能,以便在DateTimePickerFormField中显示当前日期之后的日期,直到2天之后