在Javascript中使用Date对象时遇到问题

时间:2015-02-04 20:06:44

标签: javascript

我已经写了这个函数来获取当前时间,就像自定义时间戳一样,我得到了意想不到的结果。 当前分钟是" 00"到" 09",Javascript方法getMinutes()从" 0"返回至" 9"分别。我使用开关来获取这种情况并添加另一个" 0"在前面,但它没有按预期工作。

这是我的完整代码:



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

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

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

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

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




例如,现在函数返回" Lun 17:5"何时应该返回"伦17:05"。

欢迎任何评论!

2 个答案:

答案 0 :(得分: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日期/时间库可以为你完成这项工作。

答案 1 :(得分:1)

您应该使用if语句而不是switch语句。类似的东西:

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