AYUI内置的万能日期控件-日期表达式

栏目: ASP.NET · 发布时间: 7年前

内容简介:上篇文章:1 静态限制示例16-1-1  限制日期的范围是 2016-09-10到2018-12-20

上篇文章: AYUI内置的万能日期控件-web界的my97

16 日期范围限制

1 静态限制

示例16-1-1  限制日期的范围是 2016-09-10到2018-12-20

minDate:'2016-09-10',maxDate:'2018-12-20'

AYUI内置的万能日期控件-日期表达式 首和尾 AYUI内置的万能日期控件-日期表达式

这里AY对 手动输入年月日,滚轮,单击选中日期的,都进行了控制。

示例16-1-2  限制日期的范围是 2018-10-01 11:30:00 到 2018-10-01 20:59:30,今天是2018-10-17 16:49:31 所以今天按钮也是不可以选择的

dateFmt:'yyyy-MM-dd HH:mm:ss',minDate:'2018-10-01 11:30:00',maxDate:'2018-10-01 20:59:30'

AYUI内置的万能日期控件-日期表达式

示例16-1-3 限制日期的范围是 2018年2月 到 2018年10月

dateFmt:'yyyy年M月',minDate:'2018-2',maxDate:'2018-10'

AYUI内置的万能日期控件-日期表达式

示例16-1-4 限制日期的范围是 8:00:00 到 11:30:00

dateFmt:'H:mm:ss',minDate:'8:00:00',maxDate:'11:30:00'

AYUI内置的万能日期控件-日期表达式

当然我的限制,是支持双月的

doubleCalendar:true,dateFmt:'yyyy-MM-dd HH:mm:ss',minDate:'2018-09-08 11:30:00',maxDate:'2018-10-20 20:50:30'

AYUI内置的万能日期控件-日期表达式 前面和后面 AYUI内置的万能日期控件-日期表达式

2 动态限制

%y当前年

%M当前月

%d当前日

%ld本月最后一天

%H当前时

%m当前分

%s当前秒

{}运算表达式,如:{%d+1}:表示明天

#F{}{}之间是AY内置的函数

上面的%XX是动态日期

示例16-2-1 只能选择今天以前的日期(包括今天)

maxDate:'%y-%M-%d'

AYUI内置的万能日期控件-日期表达式

示例16-2-2  只能选择今天以后的日期(不包括今天)

minDate:'%y-%M-{%d+1}'

AYUI内置的万能日期控件-日期表达式

示例16-2-3  只能选择本月的日期1号至本月最后一天

minDate:'%y-%M-01',maxDate:'%y-%M-%ld'

AYUI内置的万能日期控件-日期表达式

示例16-2-4  只能选择今天7:00:00至明天21:00:00的日期

dateFmt:'yyyy-M-d H:mm:ss',minDate:'%y-%M-%d 7:00:00',maxDate:'%y-%M-{%d+1} 21:00:00'

AYUI内置的万能日期控件-日期表达式 AYUI内置的万能日期控件-日期表达式 AYUI内置的万能日期控件-日期表达式 AYUI内置的万能日期控件-日期表达式

如果选了最大的,会自动变成最大值,纠正错误,这里纠正了 3分25秒,变成了 0分0秒,是 21:00:00

AYUI内置的万能日期控件-日期表达式

示例16-2-5  只能选择 20小时前 至 30小时后 的日期

dateFmt:'yyyy-MM-dd HH:mm',minDate:'%y-%M-%d {%H-20}:%m:%s',maxDate:'%y-%M-%d {%H+30}:%m:%s'

AYUI内置的万能日期控件-日期表达式

3 脚本自定义限制

示例16-3-1 前面的日期不能大于后面的日期且两个日期都不能大于 2020-10-01 

这里是两个级联,这里除了设置DateRule,还要设置MaxDateReferToElement和MinDateReferToElement就是绑定相关联的控件

例如下面的xaml代码,表达的意思,第一个日期,最大的日期是 后面的日期,第二个日期的最小日期 是前面一个选的日期,我们设置了MaxDateReferToElement或者MinDateReferToElement后,需要加上

maxDate:'#F{#D(ay)}'或者minDate:'#F{#D(ay)}'方可把对应的属性生效#D(ay)是固定的写法,只用于MaxDateReferToElement和MinDateReferToElement生效

 <TextBlock VerticalAlignment="Center"
                       Text="合同有效期从"
                       FontSize="14"
                       Margin="2,0,0,0"></TextBlock>
            <control:AyDateBoxCalendar  HorizontalAlignment="Stretch"
                                        Padding="0"
                                        x:Name="dbc1"
                                        Width="190" control:AyForm.Form="{Binding ElementName=forms}"
                                        MaxDateReferToElement="{Binding ElementName=dbc2}"
                               DateRule="dateFmt:'yyyy-MM-dd',maxDate:'#F{#D(ay)}'"
                                        Foreground="{DynamicResource Ay.Brush6}"
                                        Margin="1,0,2,0"
                                        Height="32"
                                        VerticalAlignment="Center"></control:AyDateBoxCalendar>
            <TextBlock VerticalAlignment="Center"
                       Text="到"
                       FontSize="14"
                       Margin="1,0,0,0"></TextBlock>
            <control:AyDateBoxCalendar  HorizontalAlignment="Stretch" control:AyForm.Form="{Binding ElementName=forms}"
                                        Padding="0"
                                        x:Name="dbc2"
                                        MinDateReferToElement="{Binding ElementName=dbc1}"
                                        Width="190"
                               DateRule="dateFmt:'yyyy-MM-dd',minDate:'#F{#D(ay)}'"
                                        Foreground="{DynamicResource Ay.Brush6}"
                                        Margin="1,0,2,0"
                                        Height="32"
                                        VerticalAlignment="Center"></control:AyDateBoxCalendar>

那么16-3-1的需求,怎么改也简单了。

第一个日期的表达式:dateFmt:'yyyy-MM-dd',maxDate:'#F{#D(ay)||#DV(2020-10-01)}'

第二个日期的表达式:dateFmt:'yyyy-MM-dd',minDate:'#F{#D(ay)}',maxDate:'2020-10-01'

注意:

两个日期的日期格式必须相同,dateFmt要一样

单击第一个日期,翻到了最后,此时第二个日期没有选择的

AYUI内置的万能日期控件-日期表达式

选择第二个

AYUI内置的万能日期控件-日期表达式

然后随便选个日期,选择今天吧,然后单击第一个日期,此时第一个日期已经被限制住咯

AYUI内置的万能日期控件-日期表达式

OK,满足需求。

当然还有种场景,第一个日期的最小日期是今天,修改如下

dateFmt:'yyyy-MM-dd',maxDate:'#F{#D(ay)||#DV(2020-10-01)}',minDate:'%y-%M-%d'

第二个日期不变,那么最小日期是明天呢

dateFmt:'yyyy-MM-dd',maxDate:'#F{#D(ay)||#DV(2020-10-01)}',minDate:'%y-%M-{%d+1}'

AYUI内置的万能日期控件-日期表达式

这里 静态日期联合限制,我们使员工#DV()函数,#DV是支持 %XX开头的动态日期限制的

示例16-3-2  前面的日期+3天 不能大于 后面的日期 

第一个日期设置:maxDate:'#F{#D(ay,{d:-3})}'

第二个日期设置:minDate:'#F{#D(ay,{d:3})}'

AYUI内置的万能日期控件-日期表达式

日期差量用法:

属性y,M,d,H,m,s分别代表年月日时分秒

为空时,表示直接取值,不做差量

{M:5,d:7} 表示 五个月零7天

{y:1,d:-3} 表示 1年少3天

{d:1,H:1} 表示一天多1小时

示例16-3-2  前面的日期+3月零2天 不能大于 后面的日期 且 

前面日期都不能大于 2020-4-3减去3月零2天 

后面日期 不能大于 2020-4-3

第一个日期设置:maxDate:'#F{#D(ay,{M:-3,d:-2})||#DV(2020-4-3,{M:-3,d:-2})}'

第二个日期设置:minDate:'#F{#D(ay,{M:3,d:2})}',maxDate:'#F{#DV(2020-4-3)}'

效果:

当第二个没有选择时候,选择第一个,切换到最后的日期

AYUI内置的万能日期控件-日期表达式

当选择第二个后

AYUI内置的万能日期控件-日期表达式

满足要求了。

那么拓展下,多个动态的天限制,比如多个DV函数

#F{#D(ay,{M:-3,d:-2})||#DV(2020-4-3,{M:-3,d:-2})||#DV(%y-%M-{%d+1}))}

我的日期,不支持自定义方法来限制用户的日期。我的日期格式必须是yyyy-MM-dd HH:mm:ss 这种双位的日期符号,不支持yyyy-M-d H:m:s这种

17 无效天的限制

可以使用此功能禁用周日至周六所对应的日期,相关属性:disabledDays (0至6 分别代表 周日至周六)

禁用周六 disabledDays:[6]

AYUI内置的万能日期控件-日期表达式

禁用周六,周日 disabledDays:[0,6]

AYUI内置的万能日期控件-日期表达式

18 无效日期

用法(正则匹配):

示例18-1 禁用 每个月份的 5日 15日 25日

disabledDates:['5$']

AYUI内置的万能日期控件-日期表达式

注意 :'5$' 表示以 5 结尾 注意 $ 的用法

示例18-2 禁用 所有早于2000-01-01的日期

disabledDates:['^19']

AYUI内置的万能日期控件-日期表达式

'^19' 表示以 19 开头 注意 ^ 的用法

当然,可以使用minDate实现类似的功能 这里主要是 在演示 ^ 的用法

示例18-3 配合min/maxDate使用,可以把可选择的日期分隔成多段

本示例本月可用日期分隔成五段 分别是: 1-3 8-10 16-24 26,27 29-月末

minDate:'%y-%M-01',maxDate:'%y-%M-%ld',disabledDates:['0[4-7]$','1[1-5]$','2[58]$']

AYUI内置的万能日期控件-日期表达式

示例18-4 禁用前一个小时和后一个小时内所有时间 使用 %y %M %d %H %m %s 等变量

AYUI内置的万能日期控件-日期表达式 选择小时 AYUI内置的万能日期控件-日期表达式

19 有效日期

opposite 默认为false, 为true时,无效日期变成有效日期,该属性对无效天,特殊天不起作用

只启用 每个月份的 5日 15日 25日

opposite:true,disabledDates:['5$']

AYUI内置的万能日期控件-日期表达式

20 特殊天和特殊日期

特殊天和特殊日期的用法跟完全无效天和无效日期完全相同,但是opposite属性对其无效

关键属性:

specialDays (0至6 分别代表 周日至周六) 用法同无效天

specialDates用法同无效日期,但是对时分秒无效

示例20-1 高亮每周 周一 周五

specialDays:[1,5]

AYUI内置的万能日期控件-日期表达式

示例20-1 高亮每周 周一 周五

specialDates:['....-..-01','....-..-15']

AYUI内置的万能日期控件-日期表达式

禁用,有效的啥的,可以结合%y,%M %d等动态日期进行处理。

比如 %y-%M-%d {%H-1}:..:..

dateFmt:'yyyy-MM-dd HH:mm:ss',disabledDates:['%y-%M-%d {%H-1}:..:..','%y-%M-%d {%H+1}:..:..']

opposite:true,dateFmt:'yyyy-MM-dd HH:mm:ss',disabledDates:['%y-%M-%d {%H-1}:..:..']

opposite:true,dateFmt:'yyyy-MM-dd HH:mm:ss',disabledDates:['%y-%M-%d %H:..:..']

====================www.ayjs.net       杨洋    wpfui.com        ayui      ay  aaronyang=======请不要转载谢谢了。=========

这个日期控件,我一共写了60多天,前后 推到设计重做7次,耐的住寂寞,才能写的出来,谢谢大家,

以上的日期控件,AY制作,也只有AYUI才有,我想这是目前WPF上 功能最全的日期控件了。

推荐您阅读更多有关于“”的文章


以上所述就是小编给大家介绍的《AYUI内置的万能日期控件-日期表达式》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

从零开始学微信公众号运营推广

从零开始学微信公众号运营推广

叶龙 / 清华大学出版社 / 2017-6-1 / 39.80

本书是丛书的第2本,具体内容如下。 第1章 运营者入门——选择、注册和认证 第2章 变现和赚钱——如何从0到100万 第3章 决定打开率——标题的取名和优化 第4章 决定美观度——图片的选取和优化 第5章 决定停留率——正文的编辑和优化 第6章 决定欣赏率——版式的编辑和优化 第7章 数据的分析——用户内容的精准营销 书中从微信运营入门开始,以商业变......一起来看看 《从零开始学微信公众号运营推广》 这本书的介绍吧!

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具