Как удалить неиспользуемые нули из даты, отформатированной как «0d 0h 23m 4s»? - PullRequest
0 голосов
/ 26 марта 2012

Как мне удалить неиспользуемые нули из счетчика моего сайта, когда он говорит, что 0d 0h 23m 4s ... "0d" и "0h" должны быть удалены ... Как мне это сделать?

Ниже приведена копия моего кода, он работает. Я просто не знаю, как не показывать нули, когда они не нужны.пример: таймер читает .. 0d 0h 58m 3s ... дни и часы в Ноль и не должны отображаться , так как мне их удалить?Я надеюсь, что это дает вам четкое представление о ситуации.

var year=2012    //-->Enter the count down target date YEAR
var month=3      //-->Enter the count down target date MONTH
var day=27       //-->Enter the count down target date DAY
var hour=0      //-->Enter the count down target date HOUR (24 hour clock)
var minute=00    //-->Enter the count down target date MINUTE
var tz=-5        //-->Offset for your timezone in hours from UTC (see http://wwp.greenwichmeantime.com/index.htm to find the timezone offset for your location)

//    -->DO NOT CHANGE THE CODE BELOW! This is just a personal comment dont mind it<--
var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")

function countdown(yr,m,d,hr,min){
theyear=yr;themonth=m;theday=d;thehour=hr;theminute=min
    var today=new Date()
    var todayy=today.getYear()
    if (todayy < 1000) {todayy+=1900}
    var todaym=today.getMonth()
    var todayd=today.getDate()
    var todayh=today.getHours()
    var todaymin=today.getMinutes()
    var todaysec=today.getSeconds()
    var todaystring1=montharray[todaym]+" "+todayd+", "+todayy+" "+todayh+":"+todaymin+":"+todaysec
    var todaystring=Date.parse(todaystring1)+(tz*1000*60*60)
    var futurestring1=(montharray[m-1]+" "+d+", "+yr+" "+hr+":"+min);
    var futurestring=Date.parse(futurestring1)-(today.getTimezoneOffset()*(1000*60));
    var dd=futurestring-todaystring
    var dday=Math.floor(dd/(60*60*1000*24)*1)
    var dhour=Math.floor((dd%(60*60*1000*24))/(60*60*1000)*1)
    var dmin=Math.floor(((dd%(60*60*1000*24))%(60*60*1000))/(60*1000)*1)
    var dsec=Math.floor((((dd%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1)
    if(dday<=0&&dhour<=0&&dmin<=0&&dsec<=0){
        document.getElementById('count').innerHTML=current;
        return;
    }
    else {
        document.getElementById('count').innerHTML=+dday+ "d "+dhour+"h "+dmin+"m "+dsec+"s";
        setTimeout("countdown(theyear,themonth,theday,thehour,theminute)",1000);
    }
}

Ответы [ 4 ]

1 голос
/ 26 марта 2012

заменить его пустой строкой как идею?

document.getElementById('count').innerHTML=current.replace(/0[a-z]\s/gi,'');

и при подсчете:

document.getElementById('count').innerHTML=
                 (+dday > 0 ? +dday + 'd ' : '') +
                 (dhour > 0 ? dhour+'h ' : '') +
                 (dmin > 0 ? dmin+'m ' : '') +
                  dsec+'s';

или (короче)

var val = +dday+ "d "+dhour+"h "+dmin+"m "+dsec+"s";
document.getElementById('count').innerHTML = val.replace(/0[a-z]\s/gi,'');
0 голосов
/ 26 марта 2012

измените эту строку:

document.getElementById('count').innerHTML=+dday+ "d "+dhour+"h "+dmin+"m "+dsec+"s";

, чтобы условно показать день, час и т. Д. Например:

document.getElementById('count').innerHTML= ((dday !=0) ? (dday+ "d ") : "") + ((dhour !=0) ? dhour+"h " : "") +dmin+"m "+dsec+"s";

Для большей ясности, вы можете построить строку в несколько строк,как таковой:

var counterStr = "";
if (dday != 0)
  counterStr += dday+ "d ";
if (dhour != 0)
  counterStr += dday + "h ";
counterStr += dmin+"m "+dsec+"s";

document.getElementById('count').innerHTML = counterStr;
0 голосов
/ 26 марта 2012

Не разбивайте свой пот на что-то, о чем уже позаботились moment.js . Эта крошечная библиотека javascript без каких-либо зависимостей заботится о отображении даты или времени (прошедших до сих пор). Он также имеет надежную поддержку локализации.

0 голосов
/ 26 марта 2012

Попробуйте это

    else {
count_str = "";
if (dday > 0) {
count_str = count_str + dday + "d ";
}
if (dhour> 0) {
count_str = count_str + dhour + "h ";
}
count_str = count_str + dmin+"m "+dsec+"s"
document.getElementById('count').innerHTML=count_str;
        setTimeout("countdown(theyear,themonth,theday,thehour,theminute)",1000);
    }
...