Форматирование строки JavaScript должно иметь 03, а не 3? - PullRequest
4 голосов
/ 10 марта 2011

У меня есть Javascript, который открывает сегодня файл в формате HTML.

function openToday()
{   
    var today = new Date();
    var strYear = today.getFullYear();
    var strMonth = today.getMonth();
    var strDay = today.getDate();

    var strURL = "file:/time/"+strYear+"/"+strMonth+"/" + strYear+"_"+strMonth+"_"+strDay+ "/" + strYear+"_"+strMonth+"_"+strDay+".html";

    alert(strURL);
    window.open(strURL,"myWindow");
}

Проблема в том, что я хочу получить 2011_03_10, но код дает мне 2011_3_10. Как мне отформатировать строку Javascript, чтобы иметь 03, а не 3?

EDIT

Этот код отлично работает

function openToday()
{   
    var today = new Date();
    var strYear = today.getFullYear();
    var strMonth = today.getMonth();
    strMonth += 1;
    if(strMonth < 10){
        strMonth = "0" + strMonth;
    }
    var strDay = today.getDate();
    if(strDay < 10){
        strDay = "0" + strDay;
    }

    var strURL = "file:/time/"+strYear+"/"+strMonth+"/" + strYear+"_"+strMonth+"_"+strDay+ "/" + strYear+"_"+strMonth+"_"+strDay+".html";

    window.open(strURL,"myWindow");
}

Ответы [ 5 ]

3 голосов
/ 10 марта 2011

Проверьте, не длиннее ли месяца 1 символ (или, альтернативно, <9).Затем добавьте 0! </p>

По длине

var strMonth = today.getMonth();

if(strMonth .length == 1){
    strMonth = "0" + strMonth ;
}

По номеру

var strMonth = today.getMonth();

if(strMonth< 10){
    strMonth= "0" + strMonth;
}

Вероятно, хотите избежать префиксапеременная с str, как Javascript, не определяет явным образом типы и может запутать код.Например, высказывание if strMonth < 10 - хорошая логика, но управление - это запутанное управление.

Другой путь!

var strMonth = "0" + today.getMonth();
strMonth = strMonth.substring(strMonth.length-2, 2);
2 голосов
/ 10 марта 2011

Я сделал для этого функцию некоторое время назад.

var strURL = "file:/time/"+strYear+"/"+convertDateToString(date.getMonth()+1)+"/" +   strYear+"_"+convertDateToString(date.getMonth()+1)+"_"+strDay+ "/" +   strYear+"_"+strMonth+"_"+strDay+".html";

Функция:

/*
Method: convertDateToString
Input: Integer  
Returns: a string from a number and adds a 0 when the number is smaller than 10

Examples: 1 => 01, 8 => 08, 11 => 11
*/ 
function convertDateToString(number){   
  return (number < 10 ) ? 0+number.toString() : number.toString();
}

Удачи!

2 голосов
/ 10 марта 2011

Вы можете создать универсальную функцию заполнения :

function pad(number, length) {
    var str = '' + number;
    while (str.length < length) {
        str = '0' + str;
    }
    return str;
}

pad(today.getDay(), 2); // If today was '3', would print '03'
0 голосов
/ 19 января 2013

Возможно, вы можете расширить его, добавив в него следующие строки:

function pad(number, length, padWith) {
    padWith = (typeof padWith!=='undefined) ? padWith : '0';
    var str = '' + number;
    while (str.length < length) {
        str = padWith + str;
    }
    return str;
}
0 голосов
/ 10 марта 2011
var strMonth = today.getMonth();
if(strMonth.length == 1){
   strMonth = '0' + strMonth;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...