javascript处理时间代码的问题(看似简单,实际上烦人)

twinsandme3 2011-11-23 10:48:44
我有一个倒数的时间代码,值的格式是XdXhXmXs,dhms→hms→ms→s的,比如说是211d5h31m10s,5h41m24s,27m12s,我要把时间代码的格式转换为标准的X日X时X分X秒,用下面的代码倒也可以正常转换出来,但是发现使用中,还有1个问题没有考虑到,就是如果倒数的时间是:31日2分49秒的时候,也就是31d2m49s,当某个值是0的时候不显示该值,就是倒数到小时为的0时直接不显示0h,下面的代码全部会退一格,有什么办法能解决这个问题呢?我需要使用里面X的值,因为我想用那个值,加上当前时间、日期,计算出到期日期、时间,所以如果是31d2m49s,转换为标准的格式就是31日0时2分49秒,就是说d、h、m、s不存在的时候,转换后的那个值要是0
基本上如果timer等于364d23h59m59s、364d59m59s、364d59s、364d59m59s、23h59m59s、59m59s这几个形式都可以正确返回相应的X值,那就没问题了
var d,h,m,s;
var timer = "364d23h59m59s";
timer = timer.replace(/(d)|(h)|(m)|(s)/g,function(){return "#"});
timer = timer.split("#").reverse().splice(1);
d = timer[3] || 0;
h = timer[2] || 0;
m = timer[1] || 0;
s = timer[0] || 0;
alert(timer+"\n"+d+"天"+h+"时"+m+"分"+s+"秒")
或者
var time = "211d5h31m10s";
var date = time.split(/[dhms]/,4);
var dateLen=date.length;
var d,h,m,s;
d=dateLen==4?date[0]:"";
h=dateLen>2?date[dateLen-3]:"";
m=dateLen>1?date[dateLen-2]:"";
s=dateLen>0?date[dateLen-1]:"";
...全文
93 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

87,989

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧