הוספת 0 בפורמט שעה ב- TS
-
כתבתי קוד שממיר אלפיות שנייה לפורמט שעה רגילה כזה: 00:00:00
אך אני צריך שבמקרה שהשעות/הדקות/השניות הם פחות מ-10 שיוסיף להם 0 בהתחלה.
כעת אני מקבל לדוגמא: 0:1:22 במקום לקבל 00:01:22
אז כתבתי את הקוד הזה.var seconds = Math.floor((ms / 1000) %60) var minutes = Math.floor((ms / (1000 * 60)) %60) var hours = Math.floor((ms / (1000 * 60 * 60)) %24) hours = (hours.toString().length == 1) ? parseInt(`0${hours}`) : hours minutes = (minutes.toString().length == 1) ? parseInt(`0${minutes}`) : minutes seconds = (seconds.toString().length == 1) ? parseInt(`0${seconds}`) : seconds console.log(hours+":"+minutes+":"+seconds);
אך הוא לא עושה את העבודה (גם לא נותן שגיאה).
ניסיתי גם כך, אך לא עוזר.var seconds = Math.floor((ms / 1000) %60) var minutes = Math.floor((ms / (1000 * 60)) %60) var hours = Math.floor((ms / (1000 * 60 * 60)) %24) hours = (hours < 10) ? Number(`0${hours}`) : hours minutes = (minutes < 10) ? Number(`0${minutes}`) : minutes seconds = (seconds < 10) ? Number(`0${seconds}`) : seconds console.log(hours+":"+minutes+":"+seconds);
אשמח לעזרתכם.
-
@katz זה עובד מצויין:
class ParseMS { static toSeconds(ms) { return Math.floor((ms / 1000) % 60); } static toMinutes(ms) { return Math.floor((ms / (1000 * 60)) % 60); } static toHoures(ms) { return Math.floor((ms / (1000 * 60 * 60)) %24); } static ensureTimeLength(time) { return time.toString().length < 2 ? `0${time}` : `${time}`; } static getFullTime(ms) { let secondes = ParseMS.ensureTimeLength(ParseMS.toSeconds(ms)), minutes = ParseMS.ensureTimeLength(ParseMS.toMinutes(ms)), houres = ParseMS.ensureTimeLength(ParseMS.toHoures(ms)); return `${houres}:${minutes}:${secondes}`; } }
שים לב מה הבעיה בקוד שלך. גם
parseInt
וגםNumber
כשאתה נותן להם ארגומנט שהוא שני אפסים, הם יחזירו לך אפס בודד. מהסיבה שלא קיים מספר שמכיל שני אפסים בלבד. -
@מוטי-אורן אמר בהוספת 0 בפורמט שעה ב- TS:
שים לב מה הבעיה בקוד שלך. גם parseInt וגם Number כשאתה נותן להם ארגומנט שהוא שני אפסים, הם יחזירו לך אפס בודד. מהסיבה שלא קיים מספר שמכיל שני אפסים בלבד.
אכן זה היה הפספוס שלי, תודה עכשיו עובד!