ExtJs计算两个DateField所间隔的月份(天数) new Date(str) IE游览器提示NaN 处理...

本文介绍了一个利用Ext.js实现的功能,通过两个日期字段控件输入服务开始时间和结束时间,系统自动计算并显示两个时间段间隔的月或天数。解决了日期格式化、时间差转换和取整数的问题,并为结束时间日期控件添加了监听事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:两个DateField控件,分别为开始时间和结束时间。当选择完结束时间后,自动计算这两个时间段所间隔的月或天数。

需要解决的问题:

1.直接使用Ext.getCmp('endDate').getValue()所取得的日期无法直接使用,需要使用Ext.util.Format.date()格式化

2.默认计算得到的时间差为毫秒,需要转换。1天=86400000毫秒。

3.得到的数需要使用Math.round()函数取整数。

4.为结束时间的日期控件加监听事件。

01. var serviceTimeStart = new Ext.form.DateField({
02. name: "serviceTimeEnd",//最新交费时间参数为上期终止时间
03. id:"startdate",
04. fieldLabel: "服务开始时间",
05. allowBlank: false,
06. width: 180,
07. tabIndex: 8,
08. format: 'Y-m-d',
09. blankText: "不能为空"
10.  
11. });
12. var serviceTimeEnd = new Ext.form.DateField({
13. //          name: "serviceTimeEnd",
14. id:"endDate",
15. fieldLabel: "服务终止时间",
16. width: 180,
17. tabIndex: 9,
18. format: 'Y-m-d',
19.  
20. listeners:{
21. change:function()
22. {
23.  
24. var e = Ext.util.Format.date(Ext.getCmp('endDate').getValue(), 'Y-m-d');//格式化日期控件值
25. var s= Ext.util.Format.date(Ext.getCmp('startdate').getValue(), 'Y-m-d');//格式化日期控件值
26.  
27. var end = new Date(e);
28. var start = new Date(s);
29. var elapsed = Math.round((end.getTime() - start.getTime())/(86400000*30)); // 计算间隔月数
30.  
31. Ext.MessageBox.alert(elapsed);
32. }
33. }
34. });
 
转http://extjs.org.cn/node/572
 
 
--------------------------new Date(str) IE游览器提示NaN-------------------------------------- 处理如下:
 
 
/*
 * new Date(str) 
 * 兼容不同浏览器
 */
function NewDate(str) {
str = str.split('-');
var date = new Date();
date.setUTCFullYear(str[0], str[1] - 1, str[2]);
date.setUTCHours(0, 0, 0, 0);
return date;
}

转载于:https://www.cnblogs.com/smallfa/p/4767047.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值