javascript - minutes - Cambio de 1-24 horas a 1-12 horas para el método "getHours()"
sethours javascript (6)
Cuando uso el método "getHour ()" en javascript, muestra el formato de hora militar. Lo necesito para mostrar la hora en números entre 1-12 en su lugar. ¿Alguien puede decirme cómo hacer esto? Aquí está el código que estoy usando:
function updateclock()
{
var time = new Date();
var todisplay = '''';
if (time.getHours() < 10) todisplay += time.getHours();
else todisplay += time.getHours();
if (time.getMinutes() < 10) todisplay += '':0'' + time.getMinutes();
else todisplay += '':'' + time.getMinutes();
document.getElementById("clock").innerHTML = todisplay;
}
¿Por qué no hacerlo de manera breve? Matemáticas, gente! :)
// returns the hours number for a date, between 1 and 12
function hours12(date) { return (date.getHours() + 24) % 12 || 12; }
Esto corregirá de 13 a 24 de nuevo al rango de 1 a 12, y de 0 a 12:
var hours = time.getHours();
if (hours > 12) {
hours -= 12;
} else if (hours === 0) {
hours = 12;
}
Además, debes dejar de repetirte en tu código. Llame a time.getHours()
y time.getMinutes()
y almacene sus valores solo una vez cada uno, y luego preocuparse por agregar los ceros iniciales, por ejemplo:
function updateclock() {
function pad(n) {
return (n < 10) ? ''0'' + n : n;
}
var time = new Date();
var hours = time.getHours();
var minutes = time.getMinutes();
if (hours > 12) {
hours -= 12;
} else if (hours === 0) {
hours = 12;
}
var todisplay = pad(hours) + '':'' + pad(minutes);
document.getElementById("clock").innerHTML = todisplay;
}
La forma más fácil de usar esto.
setInterval(function() {
var d = new Date();
document.getElementById("demo").innerHTML =
d.getHours() % 12+" : "+d.getMinutes()+" : "+d.getSeconds();
}, 1000);
<p id="demo" ></p>
Otras respuestas son de hecho muy buenas. Pero creo que, el seguimiento puede ser incluido también.
var d = new Date();
var hour = d.getHours();
var minute = d.getMinutes();
var fulltime = "";
// create a 24 elements(0-23) array containing following values
const arrayHrs = [12,1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11];
// since getMinutes() returns 0 to 9 for upto 9 minutes, not 00 to 09, we can do this
if(minute < 10) {
minute = "0" + minute;
}
if( hour < 12) {
// Just for an example, if hour = 11 and minute = 29
fulltime = arrayHrs[hour] + ":" + minute + " AM"; // fulltime = 11:29 AM
}
else {
// similarly, if hour = 22 and minute = 8
fulltime = arrayHrs[hour] + ":" + minute + " PM"; // fulltime = 10:08 PM
}
Mira lo que hice allí en arrayHrs;)
function getClockTime(){
var now = new Date();
var hour = now.getHours();
var minute = now.getMinutes();
var second = now.getSeconds();
var ap = "AM";
if (hour > 11) { ap = "PM"; }
if (hour > 12) { hour = hour - 12; }
if (hour == 0) { hour = 12; }
if (hour < 10) { hour = "0" + hour; }
if (minute < 10) { minute = "0" + minute; }
if (second < 10) { second = "0" + second; }
var timeString = hour + '':'' + minute + '':'' + second + " " + ap;
return timeString;
}
Esta función le dará el formato de tiempo perfecto en 1-12 horas.
getDateTime = () => {
const today = new Date();
const day = today.toLocaleDateString(''en-us'', { weekday: ''short'' });
const month = today.toLocaleString(''en-us'', { month: ''short'' });
const date = today.getDate()
const year = today.getFullYear()
const hours = today.getHours()
const minutes = today.getMinutes().toString()
var dayORnight = "AM";
if (hours > 11) { dayORnight = "PM"; }
if (hours > 12) { hours = hours - 12; }
if (hours == 0) { hours = 12; }
if (hours < 10) { hours = "0" + hours; }
if (minutes < 10) { minutes = "0" + minutes; }
const datetime = `${day}, ${month} ${date}, ${year} at ${hours}:${minutes} ${dayORnight}`;
console.log(datetime)
}