Flutter DateTime 常用处理

本文介绍了DateTime在开发中的常见用法,包括时间戳转换、日期格式化,以及如何使用date_format插件进行时间格式处理。作者提供了一个DateUtil类,包含了多种时间操作方法,如获取当前时间、时间戳转换、判断闰年等。
摘要由CSDN通过智能技术生成

今天介绍一下 DateTime 的一些常用功能,对其进行一个整理。

最近在开发过程中好多时候都会使用到时间方面的方法,心想还是统一处理一下,封装一个管理类,这个类可以满足我们开发过程中常用的时间方法。

今天正好整理了一下,写一篇博客,贴出来分享一下,如果大家有需要可直接复制粘贴即可。

DateTime 是我们常用的一个功能,在和服务器打交道时,将时间戳转成时间展示,将时间转成时间戳传给服务器等方法。

在介绍 DateTime 功能时,我需要介绍一下 date_format 插件。

这个 date_format 是一个时间格式处理工具,是我们在开发过程中时间方面常用的插件,下面是 插件网址介绍

date_format 时间格式插件icon-default.png?t=N7T8https://pub.dev/packages/date_format

那如何使用呢?代码如下:

我们要使用 date_format  创建制定的时间格式,例如:YYYY-MM-DD HH:MM:SS

实现代码如下:


[yyyy, '-', mm, '-', dd, " ", HH, ":", mm, ":", ss]
当然在使用的时候我们需要先将 date_format 引用一下
import 'package:date_format/date_format.dart';
时间转化的方法如下:
String formatDate(DateTime date, List<String> formats,
    {DateLocale locale = const EnglishDateLocale()}) 

其中 date 就是我们的时间,formats 就是上述面的时间格格式数组。

介绍到这就已经满足我们的功能使用了,如果想看更多方法,大家可以去上面的插件网站看一下详细介绍。

下面就是正文开始

1、date_format 引入
date_format: ^2.0.7

然后我们 pub get 一下即可。

2、代码实现

代码实现相对非常简单,这里我就不一一介绍了,我在代码里的注释已经写的很详细了,大家如果有不理解的地方,可以在评论区或者私信找我即可。废话不多说直接上代码。

我们需要创建一个类 DateUtil.dart ,当然名字大家可以随便写,这个无所谓。下面是完整代码。

import 'package:date_format/date_format.dart';

class DateUtil {
  /// 获取当前时间
  static DateTime currentDateTime = DateTime.now();

  /// 获取当前时间戳
  /// millisecondsSinceEpoch 秒
  /// microsecondsSinceEpoch 毫秒
  static int get currentTimeStamp => currentDateTime.millisecondsSinceEpoch;

  /// 获取某个时间的时间戳
  /// dateTime 时间
  static int getTimeStamp(DateTime dateTime) => dateTime.millisecondsSinceEpoch;

  /// 将某一个时间戳转时间
  /// timeStamp 时间戳
  static DateTime getTimeStampToDateTime(int timeStamp) =>
      DateTime.fromMicrosecondsSinceEpoch(timeStamp);

  /// 判断某个年份是否是闰年
  /// year 年
  static bool isLeapYear(int year) =>
      (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);

  /// 获取当前某个时间是星期几,默认是当前时间
  /// dateTime 时间
  static int getWeekByDate({DateTime? dateTime}) =>
      (dateTime ?? currentDateTime).weekday;

  /// 获取某个时间的下一天,Duration(days: 1) 1 可以变成参数,想传多长时间可自定义
  /// dateTime 时间
  static DateTime getNextDay({DateTime? dateTime}) =>
      (dateTime ?? currentDateTime).add(const Duration(days: 1));

  /// 获取某个时间的上一天,Duration(days: 1) 1 可以变成参数,想传多长时间可自定义
  /// dateTime 时间
  static DateTime getLastDay({DateTime? dateTime}) =>
      (dateTime ?? currentDateTime).subtract(const Duration(days: 1));

  /// 获取某年某个月份有多少天
  /// month 月份
  /// year 是哪年,不传默认当前年
  static int getDaysAMonth(int month, {int? year}) =>
      month == 4 || month == 6 || month == 9 || month == 11
          ? 30
          : month == 2
              ? (isLeapYear(year ?? currentDateTime.year) ? 29 : 28)
              : 31;

  /// 获取某个时间字符串展示 例如:2024-01-01 00:01:01
  /// dateType 时间格式类型
  /// dateTime 某个时间,不传默认 当前时间
  static String? getDateFormatTime({DateType? dateType, DateTime? dateTime}) =>
      formatDate(
          dateTime ?? currentDateTime, (dateType ?? DateType.YYYYMMDD).format);

  /// 将某个时间转成字符串
  /// dateTime 某个时间,不传默认 当前时间
  static String getTimeStr({DateTime? dateTime}) =>
      (dateTime ?? currentDateTime).toString();

  /// 将某个字符串转成时间
  /// timeString 某个时间字符串
  static DateTime getDateByStr(String timeString) => DateTime.parse(timeString);

  /// 比较两个时间大小
  static TimeSort timeComparison(DateTime time1, DateTime time2) =>
      time1.isBefore(time2)
          ? TimeSort.descending
          : time1.isAfter(time2)
              ? TimeSort.ascending
              : TimeSort.same;

  /// 获取两个时间相差多久
  /// ⚠️注意:Duration 是用来表示时间跨度(差值)的类,例如27天,4小时,12分钟和3秒。
  /// ⚠️注意:Duration 提供了很多时间单位转换的方法以及时间加减计算的方法,使用起来非常方便。
  static Duration getDifferenceTime(DateTime time1, DateTime time2) =>
      time1.difference(time2);
}

enum DateType {
  YYYY([yyyy]),
  YYYYMM([yyyy, '-', mm]),
  YYYYMMDD([yyyy, '-', mm, '-', dd]),
  YYYYMMDDHH([yyyy, '-', mm, '-', dd, " ", HH]),
  YYYYMMDDHHMM([yyyy, '-', mm, '-', dd, " ", HH, ":", mm]),
  YYYYMMDDHHMMSS([yyyy, '-', mm, '-', dd, " ", HH, ":", mm, ":", ss]);

  final List<String> format;

  const DateType(this.format);
}

enum TimeSort {
  ascending("升序"),
  descending("降序"),
  same("相同");

  final String title;

  const TimeSort(this.title);
}

注意⚠️:代码中的 DateType 是负责设置展示时间展示样式的枚举,TimeSort 是时间比较的 枚举。

以上就是时间管理的常用到的方法,可以基本满足大家的使用,如果不满足,大家可以在我这个基础上扩一些方法就行了。

到此就完成了DateTime一些常用的方法介绍,大家如果有一位可以打在评论区或者私信即可。

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Flutter是一个开发跨平台应用的框架,用于构建高性能、高度可定制的应用。Flutter是用Dart编写的现代化框架,由谷歌开发,它提供了一个完整的用户界面组件库和工具,使开发人员可以轻松构建美观的应用程序。 Flutter提供了日期和时间处理的功能,以实现各种日期和时间操作。日期和时间在应用程序中是非常普遍的,比如显示当前日期、时间选择器、倒计时等等。Flutter提供了一组日期和时间操作的库,用于解决这些问题。 Flutter中,日期和时间使用DateTime类来表示。DateTime类具有许多有用的方法和属性,可以让我们对日期和时间进行各种操作。以下是FlutterDateTime类的一些常见用法: 1. 获取当前时间 使用DateTime.now()方法可以获取当前时间。这个方法返回一个表示当前日期和时间的DateTime对象。 2. 格式化日期和时间 可以使用DateTime对象的toString()方法,将其转换为指定格式的字符串。Flutter中提供了许多不同的日期和时间格式,可以根据需要进行选择。 3. 时间差计算 可以使用DateTime类的差值运算符(+和-)来计算时间差。这可以用于计算两个日期或时间之间的时间间隔。 4. 时间转换 DateTime对象可以很容易地转换为不同的格式,以满足应用程序的需求。可以将DateTime对象转换为时间戳(unix时间戳)或UTC时间。 总之,Flutter提供了丰富的日期和时间处理功能,让开发人员可以轻松处理各种日期时间操作。开发者可以利用Flutter的日期和时间处理功能,通过简单的代码实现更多功能,增强应用程序的用户体验和功能性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王 哪跑!!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值