InkWell容器 和 官方自带日期组件 和第三方 日期格式转换组件
手势
在flutter中,手势表示可以从多个单独的指针事件(甚至可能是多个单独的指针)识别的语义动作(例如点击,拖拽和缩放)。 完整的一个手势可以分发多个事件,对应于手势的生命周期(例如,拖拽开始,拖拽更新和拖拽结束):
单击
onTapDown 指针已经在特定位置与屏幕接触
onTapUp 指针停止在特定位置与屏幕接触
onTap 单击事件触发
onTapCancel 先前指针触发的onTapDown不会在触发单击事件
双击
onDoubleTap 用户快速连续两次在同一位置轻敲屏幕.
长按
onLongPress 指针在相同位置长时间保持与屏幕接触
垂直拖拽
onVerticalDragStart 指针已经与屏幕接触并可能开始垂直移动
onVerticalDragUpdate 指针与屏幕接触并已沿垂直方向移动.
onVerticalDragEnd 先前与屏幕接触并垂直移动的指针不再与屏幕接触,并且在停止接触屏幕时以特定速度移动
水平拖拽
onHorizontalDragStart 指针已经接触到屏幕并可能开始水平移动
onHorizontalDragUpdate 指针与屏幕接触并已沿水平方向移动
onHorizontalDragEnd 先前与屏幕接触并水平移动的指针不再与屏幕接触,并在停止接触屏幕时以特定速度移动
child: Text('时间'),
onTap: _showTimePicker,
),
var time = DateTime(DateTime.now().year, DateTime.now().month, 1, DateTime.now().hour, DateTime.now().minute, DateTime.now().second);
var time = DateTime(DateTime.now().year, DateTime.now().month + 1 , 0).day;
var time = DateTime(DateTime.now().year, DateTime.now().month + 1 , 0);
1.日期转换成时间戳
var now=new DateTime.now();
print(now.millisecondsSinceEpoch); //单位毫秒,13位时间戳
2.时间戳转换成日期
var now=new DateTime.now();
var a=now.millisecondsSinceEpoch; // 时间戳
print(DateTime.fromMillisecondsSinceEpoch(a));
3.创建指定时间
DateTime assignDay = new DateTime(2020,10,10);
print(assignDay); // 2020-10-10 00:00:00.000
4.计算时间跨度
// 例如计算1天14小时45分的跨度
Duration timeRemaining = new Duration(days:1, hours:14, minutes:45);
print(timeRemaining); // 38:45:00.000000
5.字符串转DateTime
DateTime.parse('2019-11-08') 或者 DateTime.parse('2019-11-08 12:30:05')
6.在之前——时间比较
var today = DateTime.now();
var date = DateTime.parse("2019-06-20 15:32:41");
today.isBefore(date);
7.在之后——时间比较
var today = DateTime.now();
var date = DateTime.parse("2019-06-20 15:32:41");
today.isAfter(date);
8.相等——时间比较
var today = DateTime.now();
var date = DateTime.parse("2019-06-20 15:32:41");
today.isAtSameMomentAs(date);
9.时间增加
var today = DateTime.now(); // 2019-11-08 02:54:53.218443
var fiftyDaysFromNow = today.add(new Duration(days: 5));
print('today加5天:$fiftyDaysFromNow'); // today加5天:2019-11-13 02:54:53.218443
10.时间减少
var today = DateTime.now(); // 2019-11-08 02:54:53.218443
var fiftyDaysAgo = today.add(new Duration(days: 5));
print('today加5天:$fiftyDaysAgo '); // today减5天:2019-11-03 02:54:53.218443
11.时间差(小时数)
var day2 = new DateTime(2019, 7, 21, 0, 0, 0);
print('比较两个时间 差 小时数:${day1.difference(day2)}'); // 比较两个时间 差 小时数:-726:29:40.000000
12.获取年、月、日、星期、时、分、秒、毫秒、微妙
year、month、day、weekday、hour、minute、second、millisecond、microsecond
var today = DateTime.now();
print(today.year);
13.获取本地时区简码
print('本地时区简码:${today.timeZoneName}'); // 本地时区简码:GMT
14.返回UTC与本地时差(小时数)
DateTime today = DateTime.now();
print('返回UTC与本地时差 小时数:${today.timeZoneOffset}');
常用属性
DateTime time = DateTime.now();
- time.day,今天多少号
- time.month 当前月份
- time.year
- time.hour
- time.minute
- time.second
- time.millisecond
- time.millisecondsSinceEpoch
常用方法
DateTime last = DateTime.now();
- print(time.difference(last)>Duration(seconds: 1));// 比较二者差异
- time.add(Duration(seconds: 1));
- print(time.compareTo(last));//大于返回1
- print(time.isAfter(last));//是否在之后
- print(time.isBefore(last));//是否在之前
- print(time.isAtSameMomentAs(last));//是否在同一时刻
//案例代码
import 'package:flutter/material.dart';
import 'package:date_format/date_format.dart'; class DatePage extends StatefulWidget{
DatePage({Key key});
_DatePage createState() => _DatePage();
} class _DatePage extends State {
var date = new DateTime.now();
@override
Widget build(BuildContext context) {
// 获取自带日期
_showDatePicker () async {
var _getTime = await showDatePicker(
context: context,
initialDate: DateTime.now(),// 现在时间
firstDate: DateTime(1990), // 时间选项的最小时间
lastDate: DateTime(2030) // 时间选项的最大时间
);
if(_getTime == null) return;
setState(() {
date = _getTime;
});
};
// 获取自带时间
var _time = TimeOfDay(hour: date.hour,minute: date.minute);
_showTimePicker () async {
var _getTime = await showTimePicker(
context: context,
initialTime: _time,// 现在时间
// 时间选项的最大时间
);
if(_getTime == null) return;
setState(() {
_time = _getTime;
});
};
// TODO: implement build
return Scaffold(
appBar: AppBar(
title: Text('Date')
),
body: ListView(
children: <Widget>[
Text('${date}'), // 日期
Text('${date.millisecondsSinceEpoch}'), // 毫秒数
Text('${DateTime.fromMillisecondsSinceEpoch(date.millisecondsSinceEpoch)}'), //毫秒转换成时间 // 自带日期
RaisedButton(
child: Text('日期${date}'),
onPressed: _showDatePicker
),
// 自带时间
RaisedButton(
child: Text('时间${_time.format(context)}'),
onPressed: _showTimePicker,
),
// 带点击事件的容器
InkWell(
child: Text('日期${date}'),
onTap: _showDatePicker,
),
InkWell(
child: Text('时间${_time.format(context)}'),
onTap: _showTimePicker,
),
Text('第三方时间${formatDate(date, [yyyy, '-', mm, '-', dd])}'),
Text('第三方时间${formatDate(date, [yyyy, '年', mm, '月', dd, '日', hh, '时', mm, '分', ss, '秒'])}'),
],
)
);
}
}
InkWell容器 和 官方自带日期组件 和第三方 日期格式转换组件的更多相关文章
- 关于jquery日期控件及时间格式转换2017.05.27
开始时间:<input type="date" id="starttime" class="time"/>//data为日期控件 ...
- iphone SE 自带视频播放器要求的视频格式转换参数
- OLEDB 命令转换组件的用法
在数据流任务组件中,OLEDB 命令转换组件对输入的每行数据调用TSQL,该组件能够把输入的数据作为参数,因此,该转换组件主要用于运行参数化的查询. 命令转换组件的配置十分简单,只有三个可编辑属性,位 ...
- Vite+TS带你搭建一个属于自己的Vue3组件库
theme: nico 前言 随着前端技术的发展,业界涌现出了许多的UI组件库.例如我们熟知的ElementUI,Vant,AntDesign等等.但是作为一个前端开发者,你知道一个UI组件库是如何被 ...
- 第32讲 UI组件之 时间日期控件DatePicker和TimePicker
第32讲 UI组件之 时间日期控件DatePicker和TimePicker 在Android中,时间日期控件相对来说还是比较丰富的.其中, DatePicker用来实现日期输入设置, Time ...
- element-ui日期组件DatePicker设置日期选择范围Picker Options
element-UI提供了DatePicker日期选择器组件,可以让我们很方便的获取到日期,默认的选择是全部的日期都可以选择的,但是很多场景中我们要对日期选择范围做限定,比如出行日期就不能选过去的日期 ...
- 15. react UI组件和容器组件的拆分 及 无状态组件
1.组件的拆分 组件拆分的前提 当所有的逻辑都出现在一个组件内时 组件会变得非常复杂 不便与代码的维护 所以对组件进行拆分 IU组件 进行页面渲染 容器组件 进行逻辑操作 UI组件的拆分 新建一个 ...
- Asp.net core自定义依赖注入容器,替换自带容器
依赖注入 在asp.net core程序中,众所周知,依赖注入基本上贯穿了整个项目,以通用的结构来讲解,控制器层(Controller层)依赖业务层(Service层),业务层依赖于仓储层(Repos ...
- C#组件系列———又一款日志组件:Elmah的学习和分享
前言:好久没动笔了,都有点生疏,12月都要接近尾声,可是这月连一篇的产出都没有,不能坏了“规矩”,今天还是来写一篇.最近个把月确实很忙,不过每天早上还是会抽空来园子里逛逛.一如既往,园子里每年这个时候 ...
随机推荐
- 牛客CSP-S提高组赛前集训营4 赛后总结
复读数组 分成 3 种区间算答案: 一个块内的区间 两个块交界处,长度小于块长的区间 长度不小于块长的区间 对于第三种区间,容易发现每个区间的权值一样,只需要算出个数即可. 对于前两种空间,我的思路是 ...
- start.sh在linux下启动报错 Can't connect to any repository: ,cannot open git-receive-pack
个人博客 地址:http://www.wenhaofan.com/article/20181223135418 报错信息 Can't connect to any repository: ,canno ...
- laravel如何向视图传递值
1.定义路由 Route::get('demo','DemoController@demo'); 2.定义控制器(内with();方法就是定义传递的值 key=>value)=>" ...
- jQuery---jQuery对象与DOM对象的区别
jQuery对象与DOM对象的区别 1. DOM对象:使用JavaScript中的方法获取页面中的元素返回的对象就是dom对象.2. jQuery对象:jquery对象就是使用jquery的方法获取页 ...
- 数组的concat连接
let arr1 = [1,3,5],arr2 = [2,32,78],arr3 = [];arr3 = arr1.concat(arr2);// arr1 = [1,3,5] arr2 = [2,3 ...
- bugku sql2
sql注入2 200 http://123.206.87.240:8007/web2/ 全都tm过滤了绝望吗? 提示 !,!=,=,+,-,^,%
- 【转】Error,java对常量池来说字符串xxx的UTF8表示过长的解决及其理解
做项目,客户端这里自己模拟json数据时,一时没忍住搞得json字符串太长了(idea上大概有600多行吧),这个问题就蹦出来了.老方法直接google.百度然后看到一堆有关String 字符串常量池 ...
- 安装python3并新建python3的虚拟环境
安装依赖 yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel -y 下载P ...
- 【15】【有点特殊的dp】 剪绳子
题目 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m.n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m] .请问 k[0]k[1]...* ...
- Sql Server:创建用户并指定该用户只能看指定的视图,除此之外的都不让查看
1,在sql server中选择好要操作的数据库 2,--当前数据库创建角色 exec sp_addrole 'seeview' --创建了一个数据库角色,名称为:[seeview] 3,- ...