diff --git a/CHANGELOG.md b/CHANGELOG.md index c27fd06..86dd371 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.2 - 2020-09-21 + +* Fix issue #4 - fixed the time display when period is 12h. Now it can differ correctly when time is AM or PM and show this information. + ## 1.0.1 - 2020-08-18 * Fix issue #2 - just reference in README.md diff --git a/README.md b/README.md index dd62580..a1a0ed8 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ In the `pubspec.yaml` of your flutter project, add the following dependency: ```yaml dependencies: ... - date_time_picker: "^1.0.1" + date_time_picker: "^1.0.2" ``` In your library add the following import: diff --git a/example/lib/main.dart b/example/lib/main.dart index 0a3e173..17ad293 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -99,6 +99,7 @@ class _MyHomePageState extends State { icon: Icon(Icons.event), dateLabelText: 'Date', timeLabelText: "Hour", + //use24HourFormat: false, selectableDayPredicate: (date) { if (date.weekday == 6 || date.weekday == 7) { return false; @@ -114,13 +115,14 @@ class _MyHomePageState extends State { ), DateTimePicker( type: DateTimePickerType.dateTime, - dateMask: 'd MMMM, yyyy - HH:mm', + dateMask: 'd MMMM, yyyy - hh:mm a', controller: _controller2, //initialValue: _initialValue, firstDate: DateTime(2000), lastDate: DateTime(2100), //icon: Icon(Icons.event), dateLabelText: 'Date Time', + use24HourFormat: false, onChanged: (val) => setState(() => _valueChanged2 = val), validator: (val) { setState(() => _valueToValidate2 = val); @@ -150,6 +152,7 @@ class _MyHomePageState extends State { //initialValue: _initialValue, icon: Icon(Icons.access_time), timeLabelText: "Time", + //use24HourFormat: false, onChanged: (val) => setState(() => _valueChanged4 = val), validator: (val) { setState(() => _valueToValidate4 = val); diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 5eb93e8..1bb13d5 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -24,7 +24,7 @@ dependencies: flutter: sdk: flutter - date_time_picker: ^1.0.1 + date_time_picker: ^1.0.2 # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. diff --git a/lib/date_time_picker.dart b/lib/date_time_picker.dart index 734d946..b3dff66 100644 --- a/lib/date_time_picker.dart +++ b/lib/date_time_picker.dart @@ -521,6 +521,7 @@ class _DateTimePickerState extends FormFieldState { String _sValue; String _sDate = ''; String _sTime = ''; + String _sPeriod = ''; @override DateTimePicker get widget => super.widget as DateTimePicker; @@ -548,6 +549,10 @@ class _DateTimePickerState extends FormFieldState { _sDate = DateFormat('yyyy-MM-dd').format(_dDate); _sTime = DateFormat('HH:mm').format(_dDate); + if (!widget.use24HourFormat) { + _sTime = DateFormat('hh:mm a').format(_dDate); + } + _timeLabelController.text = _sTime; _dateLabelController.text = _sDate; @@ -559,6 +564,10 @@ class _DateTimePickerState extends FormFieldState { if (widget.type == DateTimePickerType.dateTime && _sTime != '') { lsMask = 'MMM d, yyyy - HH:mm'; + + if (!widget.use24HourFormat) { + lsMask = 'MMM d, yyyy - hh:mm a'; + } } _dateLabelController.text = DateFormat(lsMask).format(_dDate); @@ -568,7 +577,12 @@ class _DateTimePickerState extends FormFieldState { _tTime = TimeOfDay(hour: int.parse(llTime[0]), minute: int.parse(llTime[1])); _sTime = lsValue; - _timeLabelController.text = _sTime; + + if (!widget.use24HourFormat) { + _sPeriod = _tTime.period.index == 0 ? ' AM' : ' PM'; + } + + _timeLabelController.text = _sTime + _sPeriod; } } } @@ -610,6 +624,10 @@ class _DateTimePickerState extends FormFieldState { if (lsOldTime != '') { _tTime = TimeOfDay.fromDateTime(_dDate); _sTime = DateFormat('HH:mm').format(_dDate); + + if (!widget.use24HourFormat) { + _sTime = DateFormat('hh:mm a').format(_dDate); + } } } @@ -625,6 +643,10 @@ class _DateTimePickerState extends FormFieldState { if (widget.type == DateTimePickerType.dateTime && _sTime != '') { lsMask = 'MMM d, yyyy - HH:mm'; + + if (!widget.use24HourFormat) { + lsMask = 'MMM d, yyyy - hh:mm a'; + } } _dateLabelController.text = DateFormat(lsMask).format(_dDate); @@ -635,7 +657,7 @@ class _DateTimePickerState extends FormFieldState { _tTime = TimeOfDay( hour: int.parse(llTime[0]), minute: int.parse(llTime[1])); _sTime = lsValue; - _timeLabelController.text = _sTime; + _timeLabelController.text = _sTime + _sPeriod; } } } @@ -740,6 +762,15 @@ class _DateTimePickerState extends FormFieldState { if (ltTimePicked != null) { String lsHour = ltTimePicked.hour.toString().padLeft(2, '0'); String lsMinute = ltTimePicked.minute.toString().padLeft(2, '0'); + + if (ltTimePicked.period.index == 0 && lsHour == '12') { + lsHour = '00'; + } + + if (!widget.use24HourFormat) { + _sPeriod = ltTimePicked.period.index == 0 ? ' AM' : ' PM'; + } + _sTime = '$lsHour:$lsMinute'; _tTime = ltTimePicked; @@ -795,7 +826,8 @@ class _DateTimePickerState extends FormFieldState { routeSettings: widget.routeSettings, builder: (BuildContext context, Widget child) { return MediaQuery( - data: MediaQuery.of(context).copyWith(alwaysUse24HourFormat: true), + data: MediaQuery.of(context) + .copyWith(alwaysUse24HourFormat: widget.use24HourFormat), child: child, ); }, @@ -804,8 +836,30 @@ class _DateTimePickerState extends FormFieldState { if (ltTimePicked != null) { String lsHour = ltTimePicked.hour.toString().padLeft(2, '0'); String lsMinute = ltTimePicked.minute.toString().padLeft(2, '0'); + + if (ltTimePicked.period.index == 0 && lsHour == '12') { + lsHour = '00'; + } + + if (!widget.use24HourFormat) { + _sPeriod = ltTimePicked.period.index == 0 ? ' AM' : ' PM'; + } + _sTime = '$lsHour:$lsMinute'; _tTime = ltTimePicked; + } else { + String lsHour = _tTime.hour.toString().padLeft(2, '0'); + String lsMinute = _tTime.minute.toString().padLeft(2, '0'); + + if (_tTime.period.index == 0 && lsHour == '12') { + lsHour = '00'; + } + + if (!widget.use24HourFormat) { + _sPeriod = _tTime.period.index == 0 ? ' AM' : ' PM'; + } + + _sTime = '$lsHour:$lsMinute'; } String lsOldValue = _sValue; diff --git a/pubspec.yaml b/pubspec.yaml index 9cf64e6..9e71101 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: date_time_picker description: A Flutter widget to display a date time form field to show a date or clock dialog. -version: 1.0.1 +version: 1.0.2 homepage: https://github.com/m3uzz/date_time_picker environment: