How to get current time in a format hh:mm AM/PM in Javascript?
You can convert the current time to 12 hour format with a one liner
new Date().toLocaleTimeString('en-US', { hour: 'numeric', hour12: true, minute: 'numeric' });
And to add two hours to your current time
Date.now() + 2 * 60 * 60 * 1000
So you can do it in a simple one line as:
new Date(Date.now() + 2 * 60 * 60 * 1000).toLocaleTimeString('en-US', { hour: 'numeric', hour12: true, minute: 'numeric' });
Use Date
methods to set and retrieve time and construct a time string, something along the lines of the snippet.
[edit] Just for fun: added a more generic approach, using 2 Date.prototype
extensions.
var now = new Date();
now.setHours(now.getHours()+2);
var isPM = now.getHours() >= 12;
var isMidday = now.getHours() == 12;
var result = document.querySelector('#result');
var time = [now.getHours() - (isPM && !isMidday ? 12 : 0),
now.getMinutes(),
now.getSeconds() || '00'].join(':') +
(isPM ? ' pm' : 'am');
result.innerHTML = 'the current time plus two hours = '+ time;
// a more generic approach: extend Date
Date.prototype.addTime = addTime;
Date.prototype.showTime = showTime;
result.innerHTML += '<h4>using Date.prototype extensions</h4>';
result.innerHTML += 'the current time plus twenty minutes = '+
new Date().addTime({minutes: 20}).showTime();
result.innerHTML += '<br>the current time plus one hour and twenty minutes = '+
new Date().addTime({hours: 1, minutes: 20}).showTime();
result.innerHTML += '<br>the current time <i>minus</i> two hours (format military) = '+
new Date().addTime({hours: -2}).showTime(true);
result.innerHTML += '<br>the current time plus ten minutes (format military) = '+
new Date().addTime({minutes: 10}).showTime(true);
function addTime(values) {
for (var l in values) {
var unit = l.substr(0,1).toUpperCase() + l.substr(1);
this['set' + unit](this['get' + unit]() + values[l]);
}
return this;
}
function showTime(military) {
var zeroPad = function () {
return this < 10 ? '0' + this : this;
};
if (military) {
return [ zeroPad.call(this.getHours()),
zeroPad.call(this.getMinutes()),
zeroPad.call(this.getSeconds()) ].join(':');
}
var isPM = this.getHours() >= 12;
var isMidday = this.getHours() == 12;
return time = [ zeroPad.call(this.getHours() - (isPM && !isMidday ? 12 : 0)),
zeroPad.call(this.getMinutes()),
zeroPad.call(this.getSeconds()) ].join(':') +
(isPM ? ' pm' : ' am');
}
<div id="result"></div>
Simply, you can do this
const date = new Date()
const options = {
hour: 'numeric',
minute: 'numeric',
hour12: true
};
const time = new Intl.DateTimeFormat('en-US', options).format(date)
console.log(time)
For more details, you can refer to the MDN docs regarding the same.