Home > Net >  Can't convert a Datetime from a string to another format (eg: 14/12/2021 03:34:03 PM to 03:34 p
Can't convert a Datetime from a string to another format (eg: 14/12/2021 03:34:03 PM to 03:34 p

Time:12-15

I'am trying to convert a datetime string from one format to another. i tried to use intl package. But i don't know how to convert this string to another format. The datetime string i'am getting from api is 14/12/2021 03:34:03 PM. I want to show it like this in my app (only time) 03:34 pm (Also want to make PM Small letter).

CodePudding user response:

If you don't mind doing it the regexp way

import 'package:intl/intl.dart';

void main() {
  var s = "14/12/2021 12:34:03 PM";
  print(formatDateTimeString(s));
}

String formatDateTimeString(String s) {
  RegExp regexp = RegExp("(AM|PM)");
  
  // finds either AM or PM in string and converts it to lowercase
  RegExpMatch match = regexp.firstMatch(s)!;
  String end = match.group(0)!.toLowerCase();
  
  // change datetime format to HH:mm as desired
  DateTime dt = DateFormat("d/MM/yyyy HH:mm:ss").parse(s);
  DateFormat newFormat = DateFormat("HH:mm");
  String formattedS = newFormat.format(dt);
  
  // append lowercase ampm
  formattedS  = " "   end;
  
  return formattedS;
}

CodePudding user response:

You can get it by using below,

dateFormat() {
    String dateStart = '14/12/2021 03:34:03 PM';
    DateFormat inputFormat = DateFormat("dd/MM/yyyy hh:mm:ss a");
    DateTime input = inputFormat.parse(dateStart);
    String dateOutput = DateFormat("hh:mm a").format(input);
    return dateOutput.toLowerCase();
  }

CodePudding user response:

String formattedDate = DateFormat('yyyy-MM-dd – kk:mm').format(now);

image

CodePudding user response:

please check out, it's for all formated datetime , you just pass your current and required date format

import 'package:intl/intl.dart';

void main() {
  var data = "14/12/2021 03:34:03 PM";

  print(getFormattedDateFromFormattedString(
      value: data,
      currentFormat: "yyyy/MM/dd HH:mm:ss a",
      desiredFormat: "hh:mm a").toLowerCase()); //03:34 pm
}

String getFormattedDateFromFormattedString(
    {required value,
    required String currentFormat,
    required String desiredFormat,
    isUtc = false}) {
  String formattedDate = "";
  if (value != null || value.isNotEmpty) {
    try {
      DateTime dateTime =
          DateFormat(currentFormat).parse(value, isUtc).toLocal();
      formattedDate = DateFormat(desiredFormat).format(dateTime);
    } catch (e) {
      print("$e");
    }
  }
  // print("Formatted date time:  $formattedDate");
  return formattedDate;
}

  • Related