首页
Preview

Flutter 中日期时间格式化的几种方法

本文将介绍几种在 Flutter(和 Dart)中格式化 DateTime 的方法。第一种方法是从头开始编写格式化函数,后者则使用第三方库实现。

使用自定义代码

在大多数情况下,我们可以用几行代码实现所需的功能。下面的示例中,我们创建了一个名为 simplyFormat 的可复用函数,它可以返回两种格式的结果:yyyy-MM-dd HH:mm:ss(日期和时间)或 yyyy-MM-dd(仅日期)。

代码和解释如下:

// 从头定义一个简单的格式化函数
String simplyFormat({required DateTime time, bool dateOnly = false}) {
  String year = time.year.toString();

  // 如果月份是 1 到 9,则在左侧添加 "0"
  String month = time.month.toString().padLeft(2, '0');

  // 如果日期是 1 到 9,则在左侧添加 "0"
  String day = time.day.toString().padLeft(2, '0');

  // 如果小时是 1 到 9,则在左侧添加 "0"
  String hour = time.hour.toString().padLeft(2, '0');

  // 如果分钟是 1 到 9,则在左侧添加 "0"
  String minute = time.minute.toString().padLeft(2, '0');

  // 如果秒数是 1 到 9,则在左侧添加 "0"
  String second = time.second.toString().padLeft(2, '0');

  // 如果只需要年份、月份和日期
  if (dateOnly == false) {
    return "$year-$month-$day $hour:$minute:$second";
  }

  // 返回 "yyyy-MM-dd" 格式
  return "$year-$month-$day";
}

// 测试我们的函数
void main() {
  DateTime currentTime = DateTime.now();

  // 完整日期和时间
  final result1 = simplyFormat(time: currentTime);
  print(result1);

  // 仅日期
  final result2 = simplyFormat(time: currentTime, dateOnly: true);
  print(result2);

  // Kindacode.com
}

输出应为以下形式:

2023-01-08 06:10:13  
2023-01-08  

你可以将 simplyFormat 函数保存以便在其他项目中重用。它最大的优点是可以轻松自定义每一行代码,而不依赖外部库。


使用 date_format

date_format 是一个轻量级包,唯一的用途是提供一个简单的 API 用于格式化日期。

安装
运行以下命令,将包添加到 pubspec.yaml 文件中:

flutter pub add date_format

然后执行:

flutter pub get

示例
代码如下:

import 'package:date_format/date_format.dart';

void main() {
  DateTime currentTime = DateTime.now();

  String result1 = formatDate(currentTime, [yyyy, '/', mm, '/', dd]);
  print(result1);

  String result2 = formatDate(currentTime, [
    yyyy,
    '-',
    mm,
    '-',
    dd,
    ' ',
    HH,
    ':',
    mm,
  ]);
  print(result2);
}

输出:

2023/01/28  
2023-01-28 21:01  

使用 intl

intl 是一个功能强大的包,提供了许多工具,包括格式化 DateTime。

安装
运行以下命令安装最新版本:

flutter pub add intl

然后执行:

flutter pub get

示例:

import 'package:intl/intl.dart';
void main() {
  DateTime currentTime = DateTime.now();

  // 使用 "dd/MM/yyyy HH:mm" 格式
  print(DateFormat.yMd().add_jm().format(currentTime));

  // 仅日期
  print(DateFormat.yMd().format(currentTime));
}

输出:

1/8/2023 6:14 AM  
1/8/2023  

可以在该包的 API 参考页面找到更多高级选项。


使用 jiffy

jiffy 是另一个优秀的插件,它提供了解析、操作、查询和格式化日期的工具。

安装

flutter pub add jiffy  
flutter pub get  

示例:

import 'package:jiffy/jiffy.dart';
void main() {
  DateTime currentTime = DateTime.now();

  String result1 = Jiffy(currentTime).format('yyyy-MMMM-do, h:mm:ss a');
  print(result1);

  String result2 = Jiffy(currentTime).format('MMM do yy');
  print(result2);
}

输出:

2023-January-28o, 9:34:25 PM  
Jan 28th 23  

结论

本文介绍了几种在 Flutter 中格式化日期的方式,每种方式都很优雅且实用。

版权声明:本文内容由TeHub注册用户自发贡献,版权归原作者所有,TeHub社区不拥有其著作权,亦不承担相应法律责任。 如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

点赞(0)
收藏(0)
小橙子
大概是个无趣的人。

评论(0)

添加评论