value的类型判断然后调用Date

从服务器(如C#代码)得到的一个日期对象的格式可能为 :


  2014-04-04T13:04:46.187


  在展显给用户时,可能只需要显示日期部分,如:


  2014年4月4日


  不少资料介绍JavaScript的日期格式化,会直接把日期字符串转换成JavaScript的日期对象,如:


  new Date("2014-04-04T13:04:46.187") //有可能提示Invalid Date


  new Date("2014年04月04日") //有可能提示Invalid Date


  经测试,同样的字符串,在公司的电脑上转换时提示Invalid Date,在家里的电脑上又成功。是不是因为跟电脑系统环境有关?有待考究。


  通常,日期的格式不外乎就那几种,何尝不用正则表达式?想到就动手,日期匹配的正则表达式如下(支持中文):


  /^([0-9]{4})[-/.年]([0-1]?[0-9]{1})[-/.月]([0-3]?[0-9]{1})[日]?.?([0-2]?[0-9](:[0-6][0-9]){2})?/


  如果输入前面的日期格式,得到的效果如下,也许有人会奇怪,为什么把日期分组那么多个呢?后面有用到的:)


  最后附上完整的代码:


  复制代码


  function getDateStr(value, formatStr) {


  formatStr = formatStr|| "yyyy-MM-dd"; //默认格式


  var dateReg = /^([0-9]{4})[-/.年]([0-1]?[0-9]{1})[-/.月]([0-3]?[0-9]{1})[日]?.?([0-2]?[0-9](:[0-6][0-9]){2})?/;


  var arr = dateReg.exec(value);


  if (arr && arr[0]) {


  if (formatStr) {


  var subReg = /y+(。)M+(。)d+(。)?/i;


  var subArr = subReg.exec(formatStr);


  if (subArr) {


  var resStr = arr[1] + subArr[1];


  resStr += arr[2] + subArr[2];


  resStr += arr[3] + (subArr[3] || "");


  return resStr;


  }


  }


  return arr[0];


  }


  return "";


  }


  复制代码


  调用:


  var a1=  getDateStr("2014-4-17 21:36:01","yyyy年MM月dd日") //2014年4月17日


  var a2=  getDateStr("2014-4-17T21:36:01")//默认格式 2014-4-17


  注:getDateStr 暂不支持直接传一个javascript Date对象参数,不过要扩充也容易,在转换前做一下value的类型判断然后调用Date里面javascript自身的方法就行了。这里就不多说了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值