Javascript中总有一些所谓的细节知识会让你目瞪口呆。
前段时间,项目组新增一个需要,要求系统中所有显示时间的地方支持日期格式可定制
什么事日期格式可定制呢,在平常呢,我们看到的时间格式一般是“yyyy-MM-dd”形式的,现在要支持如下六种:
yyyy-MM-dd hh:mm:ss
MM-dd-yyyy hh:mm:ss
dd-MM-yyyy hh:mm:ss
yyyy/MM/dd hh:mm:ss
MM/dd/yyyy hh:mm:ss
dd/MM/yyyy hh:mm:ss
系统还特意有一个页面来定制系统的格式;一旦设定之后刷新页面系统多有模块设计时间格式的展示,全部变成最新设定的格式了。
简单支持这些还算简单;还有一种比较坑爹的是多页签操作;一个页签改了格式;另一个页面不刷新还得保持当前页面的格式(SE定的规格)。
现在的方案是:前台向后台发请求之前转一次成yyyy-MM-dd,然后后台的逻辑不用改变;后台返回数据时,再转成当前页面的格式。
现在呢,有个页面要传一个时间段字符串到后台查询,比如:
04/16/2015 19 :57:10~ 04/16/2015 21:57:10
这里就需要处理一下了。
var Eventtime ="04/16/2015 19 :57:10~ 04/16/2015 21:57:10"; Eventtime.split("~");//["04/16/201519 :57:10", "04/16/2015 21:57:10"]
然后遍历这个数组,每个元素再拆分为[“04/16/2015”,“ 19 :57:10”];然后将前半部分转换成最新格式yyyy-MM-dd,在替换第一个位子的值;之后再拼接成合法格式的eventTime传到后台;偶然间使用到了数组的splice()方法;忽然发现了,其强大的功能;分享给大家。
现在,就讲讲最强大的splice()函数了,它接受三个参数,可实现添加、删除、修改等不同的功能。看下w3school上它的语法,如下:
下面举几个简单的例子实现,增删改的效果。
添加元素
var arrJxj = [1,2,3,4,5,6]; undefined arrJxj.splice(3,0,12,13,14); [] arrJxj [1, 2, 3, 12, 13, 14, 4, 5, 6] arrJxj.splice(3,1,15,16,17); [12] arrJxj [1, 2, 3, 15, 16, 17, 13, 14, 4, 5, 6]
可以看到如果想添加元素的效果,第一个参数是想替换的位子,第二个参数为0;第三个参数就把该位置元素替换掉了;
删除元素
arrJxj.splice(3,3); [15, 16, 17] arrJxj [1, 2, 3, 13, 14, 4, 5, 6] arrJxj.splice(3,2); [13, 14] arrJxj [1, 2, 3, 4, 5, 6]
可以看到,如果不指定第三个参数,就可以实现删除特定位置的元素;
修改元素
arrJxj [1, 2, 3, 12, 13, 14] arrJxj.splice(3,2,20,21); [12, 13] arrJxj [1, 2, 3, 20, 21, 14]
第二个参数的数字,与第三个参数位数一样,就可以起到替换的效果。
当然,上面的例子其实改变了,数组本身;属于深拷贝,所以需要大家注意一下。
本文出自 “shuizhongyue” 博客,请务必保留此出处http://shuizhongyue.blog.51cto.com/7439523/1633661
原文地址:http://shuizhongyue.blog.51cto.com/7439523/1633661