如何使用JavaScript在12小时和24小时系统之间进行按钮切换

thtygnil  于 2022-12-21  发布在  Java
关注(0)|答案(2)|浏览(234)

我正在尝试用HTML、CSS和JavaScript构建一个数字时钟。我做了一个可以在12小时和24小时制之间切换的按钮。我被如何实现这一点的逻辑所困扰。

function displayTime(){
    let d = new Date()
    let hour = d.getHours()
    let minute = d.getMinutes()
    let second = d.getSeconds()
    let amOrPm = "AM"
    let clockSystem = document.getElementById("24hr-btn")

    // Indicates whether its AM or PM
    if (hour >= 12){
        amOrPm = "PM"
    }
   // Toggle Clock System
    function clockSystemTime(){
         // sets the clock to the 12hr system clock
        if (hour > 12) {
            hour -= 12
    } else {
        hour += 12
        }
    }

    if (hour < 0){
        hour = "0" + hour
    }

    if (minute < 10){
        minute = "0" + minute
    }

    if (second < 10){
        second = "0" + second
    }

    document.getElementById("clock").innerHTML = hour + ":" + minute + ":" + second + " " + amOrPm;
}

setInterval(displayTime, 1000)

第一个月

mbyulnm0

mbyulnm01#

如果使用Intl API,则会简单得多,而且不太容易出错。
Reference
这提供了一个12小时时钟:

const date = new Date(Date.UTC(2020, 11, 20, 3, 23, 16, 738));
console.log(new Intl.DateTimeFormat('en-US', { timeStyle: 'short', hour12: false, }).format(date));

这提供了24小时时钟:

const date = new Date(Date.UTC(2020, 11, 20, 3, 23, 16, 738));
console.log(new Intl.DateTimeFormat('en-US', { timeStyle: 'short', hour12: true, }).format(date));

因此:
一个二个一个一个

yquaqz18

yquaqz182#

也许您可以在这里找到答案?How do you display JavaScript datetime in 12 hour AM/PM format?
如果不是,那么逻辑如下:Date返回一个24小时的日期,因此,获取小时数将是我们在转换时间时面临的唯一问题。
如果小时数大于12,则从小时数中减去12,并将时钟设置为PM。如果不是,则只获取小时数。分钟和秒等其他内容应保持不变。
至于按钮,只要让它在用户点击时,它将改变一个JS变量,该变量包含你正在做的是12小时还是24小时记数法。如果是12,运行我上面描述的逻辑。如果是24,只接受对象给你的东西。

相关问题