Как показать время в формате AM или PM из TimeOfDay с флаттером? - PullRequest
0 голосов
/ 02 мая 2020

Я использовал ShowTimePicker класс, чтобы выбрать время по своему желанию, но хочу показать его в PM или AM с Text. Подобно 9:00 AM, 10:00 PM.

означает, что взять 12 формат часов.

Код:

import 'package:flutter/material.dart';



class ShowTimePickerDemo extends StatefulWidget {
  @override
  _ShowTimePickerDemoState createState() => _ShowTimePickerDemoState();
}

class _ShowTimePickerDemoState extends State<ShowTimePickerDemo> {
  TimeOfDay pickedTime = TimeOfDay.now();

  Future<Null> _selectTime(BuildContext context) async {
    final TimeOfDay response = await showTimePicker(
      context: context,
      initialTime: pickedTime,
    );
    if (response != null && response != pickedTime) {
      setState(() {
        pickedTime = response;
      });
    }
  } 

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        alignment: Alignment.center,
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(pickedTime.toString()),
            SizedBox(height:10),
            FlatButton(
              color: Colors.blue,
              onPressed: (){
                _selectTime(context);
              }, 
              child: Text("Show Time Pikcer")
            )
          ],
        ),
      ),
    );
  }
}

Снимок экрана OutPut:

enter image description here

1 Ответ

2 голосов
/ 02 мая 2020

Как только вы выбрали время, вы можете отформатировать его с помощью new DateFormat.jm(), что приведет к выводу, например, 5:00 PM. См. DateFormat docs для получения дополнительной информации.

Редактировать: Вы можете сделать это несколькими способами.

Одним из способов является использование функции, например:

String formatTimeOfDay(TimeOfDay tod) {
    final now = new DateTime.now();
    final dt = DateTime(now.year, now.month, now.day, tod.hour, tod.minute);
    final format = DateFormat.jm();  //"6:00 AM"
    return format.format(dt);
}

Другой способ - использовать это в примере, представленном в документах :

print(new DateFormat.yMMMd().format(new DateTime.now()));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...