flutter - 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
?
解决方案
简答
- 使用国际包
- 使用自定义日期格式
完整的工作代码
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));
推荐阅读
- sql - 在 SQL Server 中更新日期时间的时间部分
- javascript - drive.files.list 不显示以前未打开的文件
- java - 如何检查给定的字符串或日期数组是否已排序。附上我的代码
- javascript - Ramda Pipe 抛出 TypeError: Cannot read property of 'length' undefined
- ios - PHImageManager 抛出“机会性图像请求的第一阶段返回了非表格格式的图像,这不是致命的,但它是意外的”
- java - 将其他两个之间的单词排除为正则表达式
- java - 映射到 Java 8 中的运行总和
- angular - Angular 7:注入的服务未定义
- php - 每个 PHP 混合数组
- angular - Angular 7 - [弃用] 主线程上的同步 XMLHttpRequest 已弃用,因为它对最终用户的体验产生不利影响