2013-02-12 61 views
0

我正在尝试构建一个时钟应用程序,用图像替换数字的概念。用javascript分隔时间元素

我的做法是将小时与分钟一起分成两个元素。

例如 - > 02:30到 - > 0,2:3,0

切片方法是行不通的

var today=new Date(); 
var h=today.getHours(); 
var m=today.getMinutes(); 

h=checkTime(h); 
m=checkTime(m); 
h1 = h.slice(0,1); 
console.log(h); 

任何帮助表示赞赏!

+0

你正在返回数字并试图在它们上使用字符串方法,许多方法转换为字符串 – charlietfl 2013-02-12 06:27:31

回答

1
var h1 = Math.floor(h/10), 
    h2 = h % 10; 
+0

这是EXCELLENT – dontcryjustdisco 2013-02-12 06:34:00

+0

'parseInt()'是最慢的截断方法。改用'Math.floor()'。 – 2013-02-12 06:34:45

+0

使用/鼓励在声明变量时使用'var'。 – 2013-02-12 06:35:04

0

使用toString();和子串,而不是如果你想要获得时间范围内的每个“数字”

+0

for toString()..它不考虑0我认为在“04” – sasi 2013-02-12 06:37:21

0

获取小时和分钟,通过toString转换整数并分割它。 (你甚至不用拆,你可以简单地通过H [0]等访问每个字母/符号的字符串):

var d = new Date(), 
    h = ((h = d.getHours()) < 10 ? '0' + h : h).toString().split(''), 
    m = ((m = d.getMinutes()) < 10 ? '0' + m : m).toString().split(''); 


// testing 
console.log(h); 
console.log(m); 
+0

这可能是最迂回的方式来获得一个数字的两个数字。 – 2013-02-12 06:37:37

+0

@AtesGoral你是对的,谢谢指出。我把一个小测试放在一起:http://jsperf.com/converting-time。排名是清晰的和自我说话的:Math.floor,parseInt,toString和最后toString结合split。 – 2013-02-12 07:25:13

0

无需处理字符串操作:

var h1 = Math.floor(h/10); 
var h2 = h % 10;