Ответ 1
Почему бы не сделать это непродолжительным образом? Математика, люди!:)
// returns the hours number for a date, between 1 and 12
function hours12(date) { return (date.getHours() + 24) % 12 || 12; }
Когда я использую метод getHour() в javascript, он отображает военный формат времени. Мне нужно, чтобы он отображал час в цифрах от 1 до 12. Может ли кто-нибудь сказать мне, как это сделать? Вот код, который я использую:
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;
}
Почему бы не сделать это непродолжительным образом? Математика, люди!:)
// returns the hours number for a date, between 1 and 12
function hours12(date) { return (date.getHours() + 24) % 12 || 12; }
Это вернет 13 - 24 обратно в диапазон 1 - 12 и 0 обратно к 12:
var hours = time.getHours();
if (hours > 12) {
hours -= 12;
} else if (hours === 0) {
hours = 12;
}
Кроме того, вам нужно перестать повторять себя в своем коде. Вызовите time.getHours()
и time.getMinutes()
и сохраните их значения только один раз, а затем будьте обеспокоены добавлением начальных нулей, например:
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;
}
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;
}
Эта функция даст идеальный формат времени через 1-12 часов
Другие ответы действительно очень хорошие. Но я думаю, что последующие могут быть включены также.
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
}
Посмотрите, что я там сделал в arrayHrs;)
простой способ использовать это.
setInterval(function() {
var d = new Date();
document.getElementById("demo").innerHTML =
d.getHours() % 12+" : "+d.getMinutes()+" : "+d.getSeconds();
}, 1000);
<p id="demo" ></p>
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)
}
Ответ похож на принятый, но без оператора ||
.
Чисто арифметическое:
// returns the hours number for a date, between 1 and 12
function hours12(date) { return (date.getHours() + 11) % 12 + 1; }
Проверьте это здесь. Имитация часов 0 - 23:
var demoTable = document.getElementById("demo");
// simulate getHours() values 0-23
for (i = 0; i < 24; i++) {
var row = demoTable.insertRow(-1);
var format24Cell = row.insertCell(0);
var conversionCell = row.insertCell(1);
var format12Cell = row.insertCell(2);
format24Cell.innerHTML = i;
conversionCell.innerHTML = "( <b>" + i + "</b> + 11) % 12 + 1 =";
// conversion takes place here
format12Cell.innerHTML = (i + 11) % 12 + 1;
}
table {
border-collapse: collapse;
width: 100%;
}
table,
th,
td {
border: 1px solid black;
}
th {
padding: 0, 5px
}
td {
padding-left: 5px;
}
<table id="demo">
<tr>
<th colspan="3">24 to 12 Hour Format Conversion Demo</th>
<tr>
<tr>
<th>24 Hour Format</th>
<th>Conversion</th>
<th>12 Hour Format</th>
</tr>
</table>