2015-02-04 4 views
0

Я написал эту функцию, чтобы получить текущее время, например, специальную метку времени, и я получаю неожиданный результат. Когда текущая минута находится в любом месте от «00» до «09», метод getMinutes() от Javascript возвращается с «0» до «9» соответственно. Я использую переключатель, чтобы получить эти случаи, и добавьте еще один «0» спереди, но он не работает должным образом.Неисправность работы с объектом Date в Javascript

Это мой полный код:

\t function horaActual() { 
 
\t var d = new Date(); 
 
\t var dia = ''; 
 
\t var hora = ''; 
 
\t var minutos = ''; 
 

 
\t switch (d.getDay()) { 
 
\t  case 0: 
 
\t  dia = 'Dom'; 
 
\t  break; 
 
\t  case 1: 
 
\t  dia = 'Lun'; 
 
\t  break; 
 
\t  case 2: 
 
\t  dia = 'Mar'; 
 
\t  break; 
 
\t  case 3: 
 
\t  dia = 'Mie'; 
 
\t  break; 
 
\t  case 4: 
 
\t  dia = 'Jue'; 
 
\t  break; 
 
\t  case 5: 
 
\t  dia = 'Vie'; 
 
\t  break; 
 
\t  case 6: 
 
\t  dia = 'Sáb'; 
 
\t  break; 
 
\t }; 
 

 
\t switch (d.getHours()) { 
 
\t  case 0, 1, 2, 3, 4, 5, 6, 7, 8, 9: 
 
\t  hora = '0' + String(d.getHours()); 
 
\t  break; 
 
\t  default: 
 
\t  hora = String(d.getHours()); 
 
\t  break; 
 
\t }; 
 

 
\t switch (d.getMinutes()) { 
 
\t  case 0, 1, 2, 3, 4, 5, 6, 7, 8, 9: 
 
\t  minutos = '0' + String(d.getMinutes()); 
 
\t  break; 
 
\t  default: 
 
\t  minutos = String(d.getMinutes()); 
 
\t  break; 
 
\t }; 
 

 
\t return String(dia + ' ' + hora + ':' + minutos); 
 
\t }

Например, прямо сейчас функция возвращает "Лунь 17: 5", когда он должен вернуться "Лунь 17:05".

Любые комментарии приветствуются!

+0

Используйте это: http://momentjs.com/ – Magrangs

ответ

2

заявления переключателя не работает таким образом в JavaScript, вместо этого, было бы:

switch (d.getMinutes()) { 
    case 0: 
    case 1: 
    case 2: // etc... 
    case 9: 
     minutos = '0' + String(d.getMinutes()); 
     break; 
    default: 
     minutos = String(d.getMinutes()); 
     break; 
    }; 

Но, безусловно, стараются избегать изобретать велосипед - есть множество JS библиотек даты/времени, что там будет сделайте эту работу для вас.

+0

Не могли бы вы привести пример одной такой библиотеки JS? –

+1

Похоже, что комментатор в вашем вопросе, Магранг, предложил отличный вариант - [Moment.js] (http://momentjs.com/). Я не использовал этот, но выглядит очень хорошо. –

+0

moment.js is my go to library for anything date related – Magrangs

1

вы должны использовать инструкцию if вместо инструкции switch. что-то вроде:

if (d.getMinutes() <= 9) { 
    minutos = '0' + String(d.getMinutes()); 
} 
else { 
    minutos = String(d.getMinutes()); 
} 
+1

Это будет '<= 9' –

+0

хороший звонок, изменил его благодаря @JoeEnos – indubitablee

+0

Спасибо, ребята, за всех ваших собеседников, я определенно попробую momentjs un the future, right теперь я придерживаюсь этого решения, поскольку мне нужно включить al мой код на одной странице. – gdc3000

Смежные вопросы