<html>
    <head>
    </head>
    <body>
        <h1>App de traçabilitat DAFME</h1>
        <h2>Estructures Algebràiques</h2>
        <h3>Aula S03</h3>
        <a href="#">No és així? Canvia-ho.</a>
        
        <h2 id="hora">
            <span id="inici"></span> -
            <span id="fi"></span>
        </h2>
        <h3 id="data"></h3>
        <a href="#">No és així? Canvia-ho.</a>
        
        <script>
            var hora_actual = new Date();
            var minuts;
            
            // Hora d'inici
            hora_actual.setMinutes(0, 0, 0); // Arrodonir per baix els minuts
            minuts = hora_actual.getMinutes() < 10 ? hora_actual.getMinutes().toString() + '0' : hora_actual.getMinutes().toString();
            document.getElementById("inici").innerHTML = hora_actual.getHours().toString() + ":" + minuts;
            
            // Hora de fi
            hora_actual.setHours(hora_actual.getHours() + 1); // Sumar una hora
            minuts = hora_actual.getMinutes() < 10 ? hora_actual.getMinutes().toString() + '0' : hora_actual.getMinutes().toString();
            document.getElementById("fi").innerHTML = hora_actual.getHours().toString() + ":" + minuts;
            
            // Data
            var dia = hora_actual.getDate();
            var mes = hora_actual.getMonth() + 1;
            var any = hora_actual.getFullYear();
            var data = dia.toString() + '/' + mes.toString() + '/' + any.toString();
            document.getElementById("data").innerHTML = data;
        </script>
    </body>
</html>
