首页 > 解决方案 > Flutter 中的日期时间格式

问题描述

我有一个需要 type 参数的函数Date Time。目前,我正在使用这个。

DateTime.now().add(Duration(seconds: 5));

这意味着当我的应用程序中的日期和时间== DateTime.now()延迟 5 秒时。它将执行一些功能。但就我而言,我需要一个特定的日期和时间。例如,当我的应用程序中的日期和时间时== 2020-08-30(for the date will dynamically by day) 21:00:00,它将执行一些功能。问题是,如何制作Date Time特定的like 21:00:00,所以我的函数会随着时间的推移每天执行21:00:00

标签: flutterdatetime

解决方案


简答

  1. 使用国际包
  2. 使用自定义日期格式

截屏

完整的工作代码

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      home: AddedTime(),
    );
  }
}

class AddedTime extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final timeFormat = new DateFormat('h:m:s a');

    final timeInString = "09:00:00 PM";

    var datetimeObject = timeFormat.parseStrict(timeInString);
    var newDatetimeObject = datetimeObject.add(Duration(seconds: 5));

    final now = DateTime.now();
    final dateFormat = new DateFormat('y/M/d');
    final completeFormat = new DateFormat('y/M/d h:m:s a');
    final todayInString = dateFormat.format(now);
    final completeString = "$todayInString $timeInString";

    var completeDatetimeObject = completeFormat.parseStrict(completeString);
    var newCompleteDatetimeObject = completeDatetimeObject.add(Duration(seconds: 5));

    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              "$timeInString",
            ),
            Text(
              "${datetimeObject.toString()}",
            ),
            Text(
              "${newDatetimeObject.toString()}",
            ),
            Text(
              "${completeDatetimeObject.toString()}",
            ),
            Text(
              "${newCompleteDatetimeObject.toString()}",
            ),
          ],
        ),
      ),
    );
  }
}

分步教程

1.安装依赖

添加到您的pubspec.yaml

dependencies:
  flutter:
    sdk: flutter
  intl: ^0.16.1               <---------- Add this 

在您的终端中运行

flutter pub get

2.导入国际包

import 'package:intl/intl.dart';

3. 创建日期格式并使用parseStrict

    final timeFormat = new DateFormat('h:m:s a');
    
    final timeInString = "09:00:00 PM";

    var datetimeObject = timeFormat.parseStrict(timeInString);
    var newDatetimeObject = datetimeObject.add(Duration(seconds: 5));

4. [可选] 如果您需要更精确的日期

我们可以利用 DateTime.now() 函数


    final now = DateTime.now();
    final dateFormat = new DateFormat('y/M/d');
    final completeFormat = new DateFormat('y/M/d h:m:s a');
    final todayInString = dateFormat.format(now);
    final completeString = "$todayInString $timeInString";

    var completeDatetimeObject = completeFormat.parseStrict(completeString);
    var newCompleteDatetimeObject = completeDatetimeObject.add(Duration(seconds: 5));

推荐阅读