Flutter日期时间处理插件cn_datetime_utils的使用

Flutter日期时间处理插件cn_datetime_utils的使用

Datetime Utils

A Flutter包为默认的DateTime和Duration类提供更多功能。

特性

  • 新增单位“季度”。
  • 提供月、季度和年的天数。
  • 获取每个单位的开始和结束时间。
  • 更快地初始化持续时间。
  • 为DateTime新增加(+)、减(-)和比较(>、<、>=、<=)操作符。

开始使用

pubspec.yaml文件中添加依赖:

dependencies:
  cn_date_time: ^0.1.0

然后导入并使用:

import 'package:cn_datetime_utils/cn_datetime_utils.dart';

使用示例

使用新的“季度”单位:

final now = DateTime.now();
final quarter = now.quarter; // 当前季度,例如2表示第二季度

获取当月的天数:

final now = DateTime.now();
final daysOfMonth = now.daysOfMonth; // 当月的天数,例如30

获取当月的开始和结束时间:

final now = DateTime.now();
final startOfMonth = now.startOfMonth; // 当月的第一天,格式如:00:00:00:000:000 01/04/2023
final endOfMonth = now.endOfMonth; // 当月的最后一天,格式如:23:59:59:999:999 30/04/2023

快速初始化持续时间:

// 初始化30秒的持续时间
final duration = 30.second; // 30秒
// 初始化4秒和600毫秒的持续时间
final duration2 = 4.6.second; // 4秒和600毫秒

使用新的操作符:

final now = DateTime.now();
final futureTime = now + 3.minute; // 当前时间加上3分钟
if (futureTime >= now) {
  // 执行某些操作
}

完整示例代码

以下是一个完整的示例代码,展示如何使用cn_datetime_utils插件:

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

void main() {
  // 获取当前时间
  final now = DateTime.now();

  // 使用新的“季度”单位
  final quarter = now.quarter; // 当前季度

  // 获取当月的天数
  final daysOfMonth = now.daysOfMonth; // 当月的天数

  // 获取当月的开始和结束时间
  final startOfMonth = now.startOfMonth; // 当月的第一天
  final endOfMonth = now.endOfMonth; // 当月的最后一天

  // 快速初始化持续时间
  final duration = 30.second; // 30秒
  final duration2 = 4.6.second; // 4秒和600毫秒

  runApp(const MyApp());
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

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> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headlineMedium,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }
}

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

1 回复

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


cn_datetime_utils 是一个用于处理日期和时间的 Flutter 插件,特别针对中国农历和节假日等需求进行了优化。它可以帮助开发者更方便地处理日期、时间、农历、节假日等操作。

安装

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

dependencies:
  flutter:
    sdk: flutter
  cn_datetime_utils: ^1.0.0  # 请使用最新的版本号

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

基本用法

1. 获取当前日期和时间

import 'package:cn_datetime_utils/cn_datetime_utils.dart';

void main() {
  DateTime now = DateTime.now();
  print('当前日期和时间: $now');
}

2. 获取农历日期

import 'package:cn_datetime_utils/cn_datetime_utils.dart';

void main() {
  DateTime now = DateTime.now();
  LunarDate lunarDate = LunarDate.fromDateTime(now);
  print('农历日期: ${lunarDate.year}年 ${lunarDate.month}月 ${lunarDate.day}日');
}

3. 判断是否为节假日

import 'package:cn_datetime_utils/cn_datetime_utils.dart';

void main() {
  DateTime now = DateTime.now();
  bool isHoliday = HolidayUtils.isHoliday(now);
  print('今天是否是节假日: $isHoliday');
}

4. 获取节假日名称

import 'package:cn_datetime_utils/cn_datetime_utils.dart';

void main() {
  DateTime now = DateTime.now();
  String? holidayName = HolidayUtils.getHolidayName(now);
  print('今天的节假日名称: $holidayName');
}

5. 获取某个月的所有日期

import 'package:cn_datetime_utils/cn_datetime_utils.dart';

void main() {
  DateTime date = DateTime(2023, 10);
  List<DateTime> daysInMonth = DateTimeUtils.getDaysInMonth(date);
  print('2023年10月的所有日期: $daysInMonth');
}

高级用法

1. 农历与公历转换

import 'package:cn_datetime_utils/cn_datetime_utils.dart';

void main() {
  LunarDate lunarDate = LunarDate(2023, 8, 15);
  DateTime gregorianDate = lunarDate.toDateTime();
  print('农历2023年8月15日对应的公历日期: $gregorianDate');

  DateTime dateTime = DateTime(2023, 10, 1);
  LunarDate convertedLunarDate = LunarDate.fromDateTime(dateTime);
  print('公历2023年10月1日对应的农历日期: $convertedLunarDate');
}

2. 判断是否为工作日

import 'package:cn_datetime_utils/cn_datetime_utils.dart';

void main() {
  DateTime now = DateTime.now();
  bool isWorkday = HolidayUtils.isWorkday(now);
  print('今天是否是工作日: $isWorkday');
}

3. 获取节假日列表

import 'package:cn_datetime_utils/cn_datetime_utils.dart';

void main() {
  DateTime startDate = DateTime(2023, 1, 1);
  DateTime endDate = DateTime(2023, 12, 31);
  List<DateTime> holidays = HolidayUtils.getHolidaysInRange(startDate, endDate);
  print('2023年的所有节假日: $holidays');
}
回到顶部