【问题标题】:Can't convert a Datetime from a string to another format (eg: 14/12/2021 03:34:03 PM to 03:34 pm)无法将日期时间从字符串转换为另一种格式(例如:14/12/2021 03:34:03 PM 到 03:34 pm)
【发布时间】:2022-01-17 16:43:15
【问题描述】:

我正在尝试将日期时间字符串从一种格式转换为另一种格式。我试图使用国际包。但我不知道如何将此字符串转换为另一种格式。 我从 api 获得的日期时间字符串是14/12/2021 03:34:03 PM。我想在我的应用程序中显示它(仅一次)03:34 pm(也想制作 PM 小写字母)。

【问题讨论】:

    标签: flutter date datetime dart flutter-web


    【解决方案1】:
    String formattedDate = DateFormat('yyyy-MM-dd – kk:mm').format(now);
    

    How to format DateTime in Flutter

    【讨论】:

      【解决方案2】:

      如果你不介意使用正则表达式的方式

      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;
      }
      

      【讨论】:

        【解决方案3】:

        您可以通过以下方式获得它,

        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();
          }
        

        【讨论】:

          【解决方案4】:

          请查看,它适用于所有格式化的日期时间,您只需传递您当前和所需的日期格式

          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;
          }
          
          

          【讨论】:

            【解决方案5】:

            试试下面的代码希望它对你有帮助。我试过没有使用任何第三方库

                String yourDate = '14/12/2021 03:34:03 PM';
                DateFormat formateDate = DateFormat('dd/MM/yyyy hh:mm:ss a');
                DateTime inputDate = formateDate.parse(yourDate);
                String resultDate = DateFormat('hh:mm a').format(inputDate);
                print(resultDate.toLowerCase());
            

            您的小部件:

            Text(
                'Time : ${resultDate.toLowerCase()}',
                style: TextStyle(
                  fontSize: 15,
                 ),
               ),
            

            您的结果屏幕->

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-11-01
              • 1970-01-01
              • 1970-01-01
              • 2021-06-23
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多