मुझे d.getHours()
फ़ंक्शन से मिलने वाले 24-घंटे के समय को AM/PM का ट्रैक रखते हुए 12-घंटे के प्रारूप में बदलने की आवश्यकता है।
मेरा सबसे हालिया पुनरावृत्ति कुछ इस तरह दिखता है:
// get current date
var date = new Date();
// get current hours
var currentHour = date.getHours();
// for loop counter variable
var i;
console.log("Current hour: " + currentHour);
// used when currentHour + i goes past 24. (25th hour is 0).
resetCounter = 0;
for (i = 1; i < 9; i++) {
// sets variable for spans
var hourlyForecastHours = document.getElementById("hourly" + i);
var hourlyForecastTemp = document.getElementById("hourly-temp" + i);
var hourlyForecastDesc = document.getElementById("hourly-desc" + i);
// first hour to be displayed is currentHour (now) plus i hour.
hour = currentHour + i;
// if currentHour + i is greater than or equal to 24
if (hour >= 24) {
// set hour to 0 + resetCounter
hour = 0 + resetCounter;
// increment resetCounter
resetCounter++;
}
// convert 24 hr time to 12 hr time
hour = hour % 12;
// if hr is 0, make it show 12.
if (hour == "0") {
hour = 12;
}
hourlyForecastHours.textContent = hour;
console.log("Hour + " + i + ": " + hour);
}
यह वही करता है जो मुझे चाहिए। वर्तमान घंटे के अनुसार यह "9, 10, 11, 12, 1, 2, 3" आउटपुट करता है।
अब मुझे एएम/पीएम का ट्रैक रखने की जरूरत है। मैंने एक चर जैसी चीजों की कोशिश की है जो "एएम" या "पीएम" पर सेट है यदि 24 घंटे का प्रारूप समय <12 या> = 12 है और फिर इसे परिवर्तित-से-12-घंटे के अंत में जोड़ना है। .
मैं इसके बारे में भ्रमित हो रहा हूं, मैं इसे कैसे काम कर सकता हूं?
2 जवाब
आप इसे इस तरह कर सकते हैं (आइटम # कोड उदाहरण को संदर्भित करता है ताकि आप देख सकें कि यह कहां जाता है):
सुबह/शाम को ट्रैक करने के लिए एक वैरिएबल घोषित करें
var timeAmPm = "am";
इससे पहले कि आप समय को १२-घंटे पर रीसेट करें, जांचें कि क्या यह > १२ है और var को
am
याpm
पर सेट करें:(hour > 12) ? timeAmPm = "pm" : timeAmPm = "am";
आवश्यकतानुसार चर का प्रयोग करें, उदा।
var time = "Hour + " + i + ": " + hour + timeAmPm;
कार्य उदाहरण (अपने कोड का उपयोग करते हुए - HTML तत्वों तक पहुंचने वाले कोड को छोड़कर, जैसा आपने हमें नहीं दिया था):
// get current date
var date = new Date();
// get current hours
var currentHour = date.getHours();
// for loop counter variable
var i;
// 1. declare a variable to track am/pm
var timeAmPm = "am";
console.log("Current hour: " + currentHour);
// used when currentHour + i goes past 24. (25th hour is 0).
resetCounter = 0;
for (i = 1; i < 24; i++) {
// first hour to be displayed is currentHour (now) plus i hour.
hour = currentHour + i;
// if currentHour + i is greater than or equal to 24
if (hour >= 24) {
// set hour to 0 + resetCounter
hour = 0 + resetCounter;
// increment resetCounter
resetCounter++;
}
// 2. Before you reset the time, check if it is am or pm
(hour > 12) ? timeAmPm = "pm" : timeAmPm = "am";
// convert 24 hr time to 12 hr time
hour = hour % 12;
// if hr is 0, make it show 12.
if (hour == "0") {
hour = 12;
}
// 3. Use the variable as required
console.log("Hour + " + i + ": " + hour + timeAmPm);
}
थोड़ा अलग उपाय। या तो टर्नरी का उपयोग कर सकते हैं या यदि (शर्त), दोनों नहीं।
const hr = (hour) => {
let ampm = (hour < 12) ? 'am' : 'pm';
// ternary solution
let hr = ((hour % 12) == 0) ? 12 : hour%12;
// alternate solution
// let hr = (hour % 12); if (hr == 0) hr = 12;
return hr+ampm;
}
for (let hour=0; hour<24; hour++) {
console.log('military: ',hour,'analog:',hr(hour));
}