JS:让日期更加智能化地显示
来源:互联网 发布:信息是数据的什么 编辑:程序博客网 时间:2024/05/17 23:38
一个时间段,有开始及结束日期,格式均为2016-10-10
。
函数传入参数的格式为makeFriendlyDates(["2016-07-01", "2018-10-04"]);
,前者为开始日期,后者为结束日期。
函数期望返回结果为以下格式:
如果年月日均不相同,则返回:[ 'July 1st, 2016', 'October 4th, 2018' ]
如果年份相同,则返回:[ 'July 1st', 'October 4th' ]
如果年份和月份都相同,则返回:[ 'July 1st', '4th' ]
完整代码:
function makeFriendlyDates(arr) { //创建结果数组,按照新格式存入 var result = arr.map(function(e){ return newDateFormat(e); }); //如果年份相同 if(result[0].substr(-4)===result[1].substr(-4)){ //两个字符串都去掉年份 result = result.map(function(e){ return e.substring(0,e.length-6); }); //定义月份名称的正则 //挑出开始月份及结束月份 var regMonth = /[a-zA-Z]{3,9}/g; var startMonth = result[0].match(regMonth).join(''); var endMonth = result[1].match(regMonth).join(''); //月份相同的情况 if(startMonth===endMonth){ //结束日期把月份删掉 result[1] = result[1].substring(endMonth.length).trim(); return result; } else{ return result; } } else{ return result; } //转化日期表现格式的函数 function newDateFormat(str){ //把字符串变为数组便于处理 let arr = str.split("-"); return getMonth(arr[1]) + " " + getDay(arr[2]) + ", " + arr[0]; } //获取月份名称 function getMonth(m){ let month = ['January','February','March','April','May','June','July','August','September','October','November','December']; m = parseInt(m); return month.filter(function(e,i){ if(m===i+1){ return month[m-1]; } }).join(""); } //获取日名称 function getDay(d){ d = parseInt(d); if(d===1 || d===21 || d===31){ return d+"st"; } else if(d===2 || d==22){ return d+"nd"; } else if(d===3 || d===23){ return d+"rd"; } else if((d>=4&&d<=20)||(d>=24&&d<=30)){ return d+"th"; } }}
DEMO:Friendly Date Ranges
0 0
- JS:让日期更加智能化地显示
- Moment.js - 让JavaScript日期处理变得更加简单
- 让C#智能注释时显示更加明晰
- 让ajax更加友好,实时显示后台处理进度。
- 让电脑显示的字体更加圆润清晰
- CSDN代码片高亮显示,让你的博客更加靓丽~~
- js日期显示格式
- 用JS显示日期
- js显示当前日期
- Js 显示当前日期
- js时间日期显示
- JS控制日期显示
- JS控制日期显示
- js显示当前日期
- js显示日期时间
- 让日期只显示年月
- 在 JS 中使用 fetch 更加高效地进行网络请求
- 在 JS 中使用 fetch 更加高效地进行网络请求
- 最长无重复字符的子串
- java源码-Objects
- RapidXml 读取文件并遍历节点的所有属性
- 将request中的json字符串转换为json对象
- 线程安全与可重入函数
- JS:让日期更加智能化地显示
- Android 自定义软键盘
- V8嵌入指南
- mybatis 存储过程,游标
- 2017Unity开发者大会为什么依旧这么火?
- 导出到excel
- 面试题28:全排列
- Android多国语言的value文件夹命名方式
- 规范