Добавьте AM или PM при конвертации из 24-часового формата в 12-часовой в флаттере - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть средство выбора времени, которое отображает текущее время, выбранное пользователем. Я могу конвертировать его из формата 24 часа в 12 часов. Но я хочу, чтобы он также отображал AM и PM, а не только AM. Есть ли способ показать время с AM и PM, используя тип данных TimeOfDay? Любые предложения приветствуются.

Future<Null> selectTime(BuildContext context) async {
    TimeOfDay timePicked = await showTimePicker(
      context: context,
      initialTime: _currentTime,
    );

    if (timePicked != null && timePicked != _currentTime) {
      setState(() {
        _currentTime = timePicked;

        print("Time Selected : ${_currentTime.toString()}");
           _currentTime = timePicked.replacing(hour: timePicked.hourOfPeriod); //this gets it in 12 hour format

        Fluttertoast.showToast(
            msg:
                "${_currentTime.format(context)}",
            toastLength: Toast.LENGTH_LONG,
            gravity: ToastGravity.BOTTOM,
            timeInSecForIos: 1,
            backgroundColor: Colors.green,
            textColor: Colors.white,
            fontSize: 16.0);
      });
    }
  }

Ответы [ 2 ]

0 голосов
/ 10 апреля 2020
import 'package:flutter/material.dart';

void main() {
  TimeOfDay noonTime = TimeOfDay(hour: 15, minute: 0); // 3:00 PM
  TimeOfDay morningTime = TimeOfDay(hour: 5, minute: 0); // 5:00 AM

  print(noonTime.period); // gives DayPeriod.pm
  print(morningTime.period); // gives DayPeriod.am

  //example 1
  if (noonTime.period == DayPeriod.am)
    print("$noonTime is AM");
  else
    print("$noonTime is PM");

  //example 2
  if (morningTime.period == DayPeriod.am)
    print("$morningTime is AM");
  else
    print("$morningTime is PM");
}
0 голосов
/ 10 апреля 2020

вам просто нужно посмотреть, если _currentTime в 24-часовом формате больше 12, если да, то его PM, если нет, его AM

надеюсь, это помогло

...