如何在ExtJS框架中根据给定出生日期计算年龄?
在ExtJS中计算年龄的实现方案
直接用下面的工具类实现年龄计算,能处理日期字符串或Date对象,同时考虑到未到生日的情况:
Ext.define('MyApp.util.AgeCalculator', { singleton: true, calculateAge: function(birthDate) { // 统一转换为Date对象,支持字符串或Date输入 var birth = Ext.isDate(birthDate) ? birthDate : Ext.Date.parse(birthDate, 'Y-m-d'); if (!birth) return null; // 日期解析失败时返回null var today = new Date(); var age = today.getFullYear() - birth.getFullYear(); var monthDiff = today.getMonth() - birth.getMonth(); // 若当前月份早于出生月份,或同月但未到出生日期,年龄减1 if (monthDiff < 0 || (monthDiff === 0 && today.getDate() < birth.getDate())) { age--; } return age; } });
使用示例
- 传入日期字符串:
var age = MyApp.util.AgeCalculator.calculateAge('1990-05-15'); console.log(age); // 输出当前年龄 - 传入Date对象:
var birthDate = new Date(1990, 4, 15); // 注意月份是0基索引,5月对应4 var age = MyApp.util.AgeCalculator.calculateAge(birthDate);
注意事项
- 如果你的日期格式不是
Y-m-d,修改Ext.Date.parse的第二个参数,比如'm/d/Y'对应05/15/1990格式 - 从ExtJS日期选择器(datefield)获取的值本身就是Date对象,可直接传入函数
- 函数会在日期解析失败时返回
null,调用时可根据需要做异常处理
内容的提问来源于stack exchange,提问作者Edwin Macharia
相关产品推荐
相关产品推荐

