おおざっぱに、作ってみました。参考になれば幸いです。
https://codepen.io/new1ro/pen/vYLKdwB
HTML
1<div class="flex">
2 <div class="btn-group">
3 <button type="button" id="btn-01">出勤</button>
4 <button type="button" id="btn-02">退勤</button>
5 </div>
6 <div class="text-group">
7 <div class="text-item">
8 <span class="time" id="text-01"></span>
9 <span class="label">出勤</span>
10 </div>
11 <div class="text-item">
12 <span class="time" id="text-02"></span>
13 <span class="label">退勤</span>
14 </div>
15 </div>
16</div>
CSS
1.flex {
2 display: flex;
3}
4.btn-group button {
5 display: block;
6}
7
8/* 時間 (.time) が空の場合、その弟要素(.label) を透明にする。 */
9/* 最終的にはJavaScriptで.activeなどのクラスを付与する、などの実装が望ましい */
10.text-item > .time:empty + .label {
11 opacity: 0;
12}
JS
1// 出勤ボタンをクリックしたときの処理
2document.getElementById('btn-01').addEventListener('click', event => {
3 // 現在の日時を取得
4 var now = new Date();
5
6 var month = now.getMonth() + 1;
7 var day = now.getDate();
8 var time = now.getHours() + ':' + now.getMinutes();
9
10 // テキストの内容を更新
11 document.getElementById('text-01').innerText = month + '/' + day + ' ' + time;
12});
13
14// 退勤ボタンをクリックしたときの処理
15document.getElementById('btn-02').addEventListener("click", event => {
16 // 現在の日時を取得
17 var now = new Date();
18
19 var month = now.getMonth() + 1;
20 var day = now.getDate();
21 var time = now.getHours() + ':' + now.getMinutes();
22
23 // テキストの内容を更新
24 document.getElementById('text-02').innerText = month + '/' + day + ' ' + time;
25});
上記JavaScriptについては
「出勤ボタンをクリックしたときの処理」と「退勤ボタンをクリックしたときの処理」の処理はほぼ同じなので、まずは片方だけ見て内容を理解してください。
new Date();
が肝心なところです。
紙に書かれた仕様だと、数字が1桁のときに「08」「01」などの表示にしたり、曜日を表示しようとしたりしていますが、その点については以下を参照に実装してみてください。
JavaScriptで日付や時間の0詰めを実装する | tagamidaiki.com
https://tagamidaiki.com/javascript-0-chink/
曜日の表示などは、以下を参考に実装してみてください。
JavaScriptで日時、曜日を取得する方法