无法将日期时间从字符串转换为另一种格式(例如:14/12/2021 03:34:03 PM 到 03:34 pm)

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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,
     ),
   ),

您的结果屏幕->

【讨论】:

以上是关于无法将日期时间从字符串转换为另一种格式(例如:14/12/2021 03:34:03 PM 到 03:34 pm)的主要内容,如果未能解决你的问题,请参考以下文章

在java中将日期从一种格式转换为另一种格式[重复]

将日期转换为另一种格式的 SQL 查询

如何在java中使用日光将日期格式从一个时区转换为另一种时区[重复]

将一种格式的字符串日期转换为另一种格式的日期对象

将日期转换为格式日、日月年

如何在swift(ios)中将字符串格式的日期转换为另一种字符串格式[重复]