Flutter日期时间格式化插件date_time_formatter的使用

Flutter日期时间格式化插件date_time_formatter的使用

本插件用于将UNIX(毫秒)时间戳转换为美观且易于理解的时间和日期格式。

使用

pubspec.yaml文件中添加插件依赖:

dependencies:
  date_time_formatter: 0.0.2+1

在Dart文件中导入库:

import 'package:date_time_formatter/date_time_formatter.dart';

通过TimeFormatter格式化任意UNIX时间戳(整型,自纪元以来的毫秒数)。如果你的项目使用Firebase,并且获取的时间是以时间戳格式存储的,则需要将其转换为人类可读的格式。例如,从Firebase获取的时间戳可以传递给TimeFormatter进行处理:

TimeFormatter(
  Time: Timestamp(1659089683, 98000000),
),

格式

此插件目前仅支持一种时间格式:

  • 示例:7:00 am
  • 示例:12:00 pm

完整示例代码

以下是一个完整的示例代码,展示了如何使用date_time_formatter插件来格式化时间戳:

import 'package:date_time_formatter/date_time_formatter.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Date Time Formatter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Date Time Formatter Demo'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: TimeFormatter(
          /// 将 `null` 替换为你的时间戳对象以进行格式化
          time: Timestamp(1659089683, 98000000), // 示例时间戳
        ),
      ),
    );
  }
}

更多关于Flutter日期时间格式化插件date_time_formatter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter日期时间格式化插件date_time_formatter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中,date_time_formatter 是一个用于日期和时间格式化的插件。它可以帮助你轻松地将 DateTime 对象格式化为各种字符串形式,或者将字符串解析为 DateTime 对象。以下是如何使用 date_time_formatter 插件的详细步骤。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 date_time_formatter 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  date_time_formatter: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

2. 导入包

在你需要使用日期时间格式化的文件中,导入 date_time_formatter 包:

import 'package:date_time_formatter/date_time_formatter.dart';

3. 格式化日期时间

你可以使用 DateTimeFormatter 类中的方法来格式化 DateTime 对象。以下是一些常用的格式化示例:

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

  // 格式化日期
  String formattedDate = DateTimeFormatter.format(now, 'yyyy-MM-dd');
  print('Formatted Date: $formattedDate'); // 输出: 2023-10-05

  // 格式化时间
  String formattedTime = DateTimeFormatter.format(now, 'HH:mm:ss');
  print('Formatted Time: $formattedTime'); // 输出: 14:30:45

  // 格式化日期和时间
  String formattedDateTime = DateTimeFormatter.format(now, 'yyyy-MM-dd HH:mm:ss');
  print('Formatted DateTime: $formattedDateTime'); // 输出: 2023-10-05 14:30:45

  // 自定义格式化
  String customFormat = DateTimeFormatter.format(now, 'dd/MM/yyyy HH:mm');
  print('Custom Format: $customFormat'); // 输出: 05/10/2023 14:30
}

4. 解析字符串为 DateTime

你还可以使用 DateTimeFormatter 将字符串解析为 DateTime 对象:

void main() {
  String dateStr = '2023-10-05 14:30:45';
  
  // 解析字符串为 DateTime
  DateTime dateTime = DateTimeFormatter.parse(dateStr, 'yyyy-MM-dd HH:mm:ss');
  print('Parsed DateTime: $dateTime'); // 输出: 2023-10-05 14:30:45.000
}

5. 支持的格式化符号

date_time_formatter 支持以下格式化符号:

  • yyyy: 四位数的年份
  • yy: 两位数的年份
  • MM: 两位数的月份
  • dd: 两位数的日期
  • HH: 24小时制的小时
  • hh: 12小时制的小时
  • mm: 两位数的分钟
  • ss: 两位数的秒钟
  • a: AM/PM 标记

6. 其他功能

date_time_formatter 还提供了其他一些有用的功能,例如:

  • 获取当前时间的格式化字符串

    String currentTime = DateTimeFormatter.current('yyyy-MM-dd HH:mm:ss');
    print('Current Time: $currentTime');
    
  • 获取相对时间(如“2小时前”):

    DateTime pastTime = DateTime.now().subtract(Duration(hours: 2));
    String relativeTime = DateTimeFormatter.relativeTime(pastTime);
    print('Relative Time: $relativeTime'); // 输出: 2小时前
回到顶部