如何消除 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 中的命名路由如何消除重复?

如何在flutter中实现日历功能,以便在DateTimePickerFormField中显示当前日期之后的日期,直到2天之后

格式化 datePicker 标头 - Flutter

Flutter 消除状态栏蒙层

如何消除颤动上文本上方和下方的间隙

根据日期显示列表项 - Flutter