2010-07-26 2 views

답변

3

이와 비슷한?

var fraction = 14.5; 
var hours = Math.floor(fraction); // extract the hours (in 24 hour format) 
var mins = 60 * (fraction - hours); // calculate the minutes 
t = new Date(); // create a date/time object 

t.setHours(hours); // set the hours 
t.setMinutes(mins); // set the mins 
alert(t.toTimeString()); //show it 

또는 완전히 수동

var fraction = 14.5; 
var hours = Math.floor(fraction); 
var mins = 60 * (fraction - hours); 
var ampm = ((fraction%24)<12)?'am':'pm'; 

formatted = ('0' + hours%12).substr(-2) + ':' + ('0' + mins).substr(-2) + ':00 ' + ampm; 
alert(formatted); 

업데이트

뿐만 아니라 초와 버전 ..

var fraction = 14.33; 
var hours = Math.floor(fraction); 
var allseconds = 3600 * (fraction - hours); 
var minutes = Math.floor(allseconds/60); 
var seconds = Math.floor(allseconds%60); 
var ampm = ((fraction%24)<12)?'am':'pm'; 

formatted = ('0' + hours%12).substr(-2) + ':' + ('0' + minutes).substr(-2) + ':' + ('0' + seconds).substr(-2) +' ' + ampm; 
alert(formatted); 
+0

분율은 또한 분뿐만 아니라 초를 저장,하지만 그건 내가 지금까지 – Sarah

+0

@Sarah을 필요한 모양, 완전히 또 다른 방법을 추가 설명서 .. –

+0

@Sarah, 초를 추가 한 버전 : –

8
var fraction = 23.5; 

var date = new Date(2000, 1, 1); // use any date as base reference 
date.setUTCSeconds(fraction * 3600); // add number of seconds in fractional hours 

그런 다음 서식 지정 및 채우기가 필요하지 않은 경우 this 또는 Date.js과 같은 날짜 서식 스크립트를 사용하십시오.

date.format("HH:MM:ss"); // 23:30:00 

See an example. here의 서식 지정 기능을 사용하고 있습니다.

+0

+1, 훌륭하게 .. 나는 수동으로 .. LOL .. * facepalm *! –

+0

+1 예, Steven Leviathin의 날짜 포맷터는 JS의 유연한 날짜 형식에 대해 훌륭합니다. http://blog.stevenlevithan.com/archives/date-time-format – fearoffours

+0

@Gaby - 최근 JavaScript 집합 * 함수가 오버플로를 매우 잘 처리한다는 것을 발견했습니다. 멋지게 내게 경외감을 갖 춥니 다 :) .. @fearoffours - Date.js가 너무 많이 느껴질 때 실제로 날짜 형식을 지정하는 멋진 가벼운 라이브러리입니다 :) – Anurag

0

수동 기능 :

 var time = function(num) { 
      if(num < 0 || num >= 24) {throw "Invalid number");} 
      var x = num > 13 ? num - 12 : num; 
      var h = Math.floor(x); 
      var min = x - h; 
      var ampm = num >= 12 && num < 24 ? "pm" : "am"; 

      return (h + ":" + Math.floor(min * 60) + ampm); 
     }; 

테스트 :

 time(13.40); // 1:24pm 
     time(11.25); // 11:15pm 
     time(12.50); // 12:30pm 
     time(23.50); // 11:30pm 
     time(0.50); // 0:30am 
     time(24.00); // error!! 
관련 문제