ant-desgin DatePicker两个及以上日期选择框联动

今天写一个日期选择框联动的需求,本来是想使用range的,但是range在具体使用上有诸多不便,于是便将两个日期选择框进行独立联动,在传值时将两个值再按照自己想要的格式进行传递
这里我的写的是开始和结束年份保持在一年的例子(其他需求亦可以此为变种进行编写)

这里的话需要用到一个非常好用的时间处理插件moment,安装的话直接使用npm i moment下载即可

引用:

import moment from 'moment'

html

	<nz-year-picker 
		nzFormat="yyyy" 
		name="warmStartyear" 
		[(ngModel)]="modal.warmStartyear" 
		(ngModelChange)="warmStartyearchange($event)"
	>
	</nz-year-picker>
	<label style="margin: 0 20px;">一</label>
	<nz-year-picker 
		nzFormat="yyyy" 
		name="warmEndyear" 
		[(ngModel)]="modal.warmEndyear" 
		(ngModelChange)="warmEndyearchange($event)"
	>
	</nz-year-picker>

ts

  modal = {
   warmStartyear: null,
    warmEndyear: null,
    warmyear: null
  };
	
  warmStartyearchange(value) {
    this.modal.warmEndyear = moment(String(Number(moment(value).format('YYYY')) + 1)).valueOf();
    this.modal.warmyear = moment(value).format('YYYY') + '-' + (Number(moment(value).format('YYYY')) + 1);
  }
  warmEndyearchange(value) {
    this.modal.warmStartyear = moment(String(Number(moment(value).format('YYYY')) - 1)).valueOf();
    this.modal.warmyear = (Number(moment(value).format('YYYY')) - 1) + '-' + moment(value).format('YYYY');
  }

这里值得一提的是 DatePicker 组件回显日期的话需要标准格式的日期亦或是时间戳,否则会导致回显失败。这里的话当然转成时间戳对我们是最方便的,下面这行是我所需要传给后台的数据格式 '1970-1971’这种字符串的格式,其他处理方式亦可在此进行
(ps:此处处理年份+1或者月份+1不建议使用直接加时间戳的方式进行,因为月份有长有短,年份时在闰年的时候也会出现偏差,因为现将其转为数字+1后再转回去更严谨)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值