2011-06-15 29 views

Respuesta

18

método más fiable es para convertirlo en un objeto fecha JS, a continuación, hacer matemáticas en ese

var olddate = new Date(2011, 6, 15, 8, 32, 0, 0); // create a date of Jun 15/2011, 8:32:00am 

var subbed = new Date(olddate - 3*60*60*1000); // subtract 3 hours 

var newtime = subbed.getHours() + ':' + subbed.getMinutes(); 

el objeto Date acepta tanto el año/mes/día/hora/minuto/segundo/milisegundos O una marca de tiempo de estilo unix de milisegundos desde enero de 1-1970 para el constructor.

+0

Pude generar un sello de tiempo único de otra cosa, ¡así que funcionó muy bien! Aunque también tuve que hacer '0' minutos en' 00' minutos y 'if (hour> 12) {hour = hour -12}' y algo similar para AM/PM. –

0

puede utilizar que la paz de código:

var T1=new Date("September 5, 2005 8:10:00"); 
var T2=new Date("September 5, 2005 13:35:00"); 
var diff=new Date(); 
diff.setTime(T2-T1); 
alert(diff.getHours()+":"+diff.getMinutes()) 

esperanza esto ayuda ..

+0

¡Está mal! El resultado de este código es 2:25 y la diferencia de tiempo para esto es realmente: 13 h 25 m - 8 h 10 m = 5 h 15 m – chespinoza

-1

Usted puede tratar de una biblioteca jQuery como DateJs. A continuación se presentan algunos ejemplos que se muestran a partir de ese enlace:

// Number fun 
(3).days().ago(); 

// Convert text into Date 
Date.parse('today'); 
Date.parse('t + 5 d'); // today + 5 days 
Date.parse('next thursday'); 
Date.parse('February 20th 1973'); 
Date.parse('Thu, 1 July 2004 22:30:00'); 
+0

Date.js no es "una biblioteca jQuery" , lo anterior no responde la pregunta. – RobG

0

parte más difícil es analizar en su tiempo - Acabo añadido 1 Ene de 2009 hasta el inicio del método de análisis para que lo analiza bien y usted don' Necesito escribir el tuyo. (No es que sea difícil) Contraiga el código siguiente en unas pocas líneas, expandido para mostrar los pasos.

<html> 
<head> 
    <script type="text/javascript"> 
     function calculateTime(stringTime) { 
      var hoursToSubtract = 1; 
      var oldTime = Date.parse('Jan 1, 2009 ' + stringTime); 
      var newTime = new Date(oldTime - 1000 * 60 * 60 * hoursToSubtract); 
      var hours = newTime.getHours(); 
      var minutes = newTime.getMinutes(); 
      var designation = "PM"; 
      if ((hours == 0 || hours == 24) && minutes == 0) 
       designation = 'MIDNIGHT'; 
      else if (hours == 12 && minutes == 0) 
       designation = 'NOON' 
      else if (hours < 12) 
       designation = 'AM'; 
      else 
       hours -= 12; 

      document.write('new time = ' + hours + ':' + minutes + ' ' + designation); 
     } 
    </script> 
</head> 
<body> 
    <script type="text/javascript"> 
     calculateTime('8:30 AM'); 
     calculateTime('8:30 PM'); 
     calculateTime('12:10 PM'); 
    </script> 
</body> 
</html> 
0

Un montón de respuestas en el camino correcto, uno más a tener en cuenta:

// Assumes timeString is hh:mm am/pm 
function addHours(timeString, h) { 
    var t = timeString.match(/\d+/g); 
    var am = /am$/.test(timeString); 
    var d = new Date(); 
    d.setHours(+t[0] + (am? 0 : 12) + +h, +t[1]); 
    return formatTime(d.getHours() + ':' + d.getMinutes()); 
} 
function formatTime(t) { 
    function addZ(n) { 
    return n<10? '0'+n : ''+n; 
    } 

    var t = t.split(':'); 
    var m = (t[0] > 12)? 'pm' : 'am'; 

    return addZ(t[0]%12 || t[0]) + ':' + addZ(t[1]) + ' ' + m; 
} 

alert(addHours('12:15 am', -13)); // 11:15 pm 
2

Si lo que desea es jugar con sólo las horas, creo que el siguiente sería fácil para usted:

var timeStr = '1:30 PM' 
var parts = timeStr.split(':'); 
var hour = parseInt($.trim(parts[0])); 
hour -= 3; 

if(hour <= 0){ 
     // easily flip it by adding 12 
    hour += 12; 

    // swap am & pm 
     if(parts[1].match(/(AM|am)/)){ 
     parts[1] = parts[1].replace('AM', 'PM').replace('am', 'pm') 
      // keep the case 
     } else { 
      parts[1] = parts[1].replace('PM', 'AM').replace('pm', 'am') 
     } 
} 

// final answer 
timeStr = hour + ':' + parts[1]; 
+0

Esto devuelve un número negativo al restar 3 de 1. –

+0

mi resultado: "10:30 AM" si hora <0, se agregará por 12, lo que asegura que la hora no sea negativa. –

7

Usando moment.js

moment("8:32 AM", 'h:mm A').subtract('hours', 2).format('h:mm A') 
Cuestiones relacionadas