날짜 계산기 스크립트입니다. 이 스크립트는 두 날짜 사이의 차이를 일 단위로 계산하고, 그 결과를 출력하도록 하였답니다. 사용자는 원하는 날짜 형식을 입력할 수 있습니다. 이 스크립트는 다음과 같은 방식으로 작동하니, 필요에 따라 수정하여 사용해 주세요.
<!DOCTYPE html>
<html>
<head>
<style>
.container-beomsang {
max-width: 500px;
margin: 0 auto;
padding: 20px;
}
.form-beomsang {
background: linear-gradient(to bottom, #f8f8f8, #e8e8e8);
border: 1px solid #ccc;
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);
margin-bottom: 20px;
}
label {
display: block;
margin-bottom: 8px;
font-weight: bold;
color: #333;
}
input[type="text"],
input[type="date"] {
width: 100%;
padding: 8px;
border: 1px solid #ccc;
border-radius: 4px;
outline: none;
}
input[type="text"] {
margin-bottom: 8px;
}
button {
padding: 10px 20px;
background-color: #4CAF50;
color: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
outline: none;
transition: background-color 0.3s;
}
button:hover {
background-color: #45a049;
}
label[id^="days-"] {
display: block;
margin-top: 8px;
margin-bottom: 24px;
color: #666;
font-style: italic;
}
</style>
</head>
<body>
<div class="container-beomsang">
<h2>날짜 계산기</h2>
<form class="form-beomsang">
<label for="start-date-beomsang">시작 날짜</label>
<input type="date" max="9999-12-31" id="start-date-beomsang"><br><br>
<label for="end-date-beomsang">종료 날짜</label>
<input type="date" max="9999-12-31" id="end-date-beomsang"><br><br>
<button onclick="calculateDays(event)">날짜 차이 계산하기</button>
<label id="days-diff-beomsang">날짜를 입력해 주세요.</label>
<label for="additional-days-beomsang">시작 날짜로부터 며칠 이후</label>
<input type="text" id="additional-days-beomsang">
<button onclick="calculateDate(event)">날짜 며칠 이후 계산하기</button>
<label id="days-add-beomsang">날짜를 입력해 주세요.</label>
</form>
</div>
<script>
document.getElementById('start-date-beomsang').valueAsDate = new Date();
document.getElementById('end-date-beomsang').valueAsDate = new Date();
function calculateDays(event) {
event.preventDefault();
var startDateStr = document.getElementById("start-date-beomsang").value.replace(/-/g, '');
var endDateStr = document.getElementById("end-date-beomsang").value.replace(/-/g, '');
if (!validateDate(startDateStr) || !validateDate(endDateStr)) {
document.getElementById("days-diff-beomsang").textContent = "올바른 날짜 형식을 입력하세요.";
return;
}
var startDate = parseDate(startDateStr);
var endDate = parseDate(endDateStr);
var timeDiff = Math.abs(endDate.getTime() - startDate.getTime());
var daysDiff = Math.ceil(timeDiff / (1000 * 3600 * 24));
document.getElementById("days-diff-beomsang").textContent = "날짜 차이: " + daysDiff + "일";
}
function calculateDate(event) {
event.preventDefault();
var startDateStr = document.getElementById("start-date-beomsang").value.replace(/-/g, '');
var additionalDaysStr = document.getElementById("additional-days-beomsang").value.replace(/-/g, '');
if (!validateDate(startDateStr)) {
document.getElementById("days-add-beomsang").textContent = "올바른 날짜와 며칠을 입력하세요.";
return;
}
if (/^\d+$/.test(additionalDaysStr) && parseInt(additionalDaysStr) > 0) {
} else {
additionalDaysStr = 0;
}
var startDate = parseDate(startDateStr);
var additionalDays = parseInt(additionalDaysStr);
var resultDate = new Date(startDate);
resultDate.setDate(resultDate.getDate() + additionalDays);
var year = resultDate.getFullYear();
var month = resultDate.getMonth() + 1;
var day = resultDate.getDate();
var formattedDate = year + "년 " + month + "월 " + day + "일";
document.getElementById("days-add-beomsang").textContent = "시작 날짜로부터 " + additionalDays + "일 후: " + formattedDate;
}
function validateDate(dateStr) {
var dateRegex = /^\d{8}$/;
return dateRegex.test(dateStr);
}
function parseDate(dateStr) {
var year = dateStr.substr(0, 4);
var month = dateStr.substr(4, 2) - 1;
var day = dateStr.substr(6, 2);
return new Date(year, month, day);
}
</script>
</body>
</html>
--추가 정리
<form class="form-beomsang">
<label for="start-date-beomsang">시작 날짜</label>
<input type="date" max="9999-12-31" id="start-date-beomsang"><br><br>
<label for="end-date-beomsang">종료 날짜</label>
<input type="date" max="9999-12-31" id="end-date-beomsang"><br><br>
<button onclick="calculateDays(event)">날짜 차이 계산하기</button>
<label id="days-diff-beomsang">날짜를 입력해 주세요.</label>
<label for="additional-days-beomsang">시작 날짜로부터 며칠 이후</label>
<input type="text" id="additional-days-beomsang">
<button onclick="calculateDate(event)">날짜 며칠 이후 계산하기</button>
<label id="days-add-beomsang">날짜를 입력해 주세요.</label>
</form>
<script>
document.getElementById('start-date-beomsang').valueAsDate = new Date();
document.getElementById('end-date-beomsang').valueAsDate = new Date();
function calculateDays(event) {
event.preventDefault();
var startDateStr = document.getElementById("start-date-beomsang").value.replace(/-/g, '');
var endDateStr = document.getElementById("end-date-beomsang").value.replace(/-/g, '');
if (!validateDate(startDateStr) || !validateDate(endDateStr)) {
document.getElementById("days-diff-beomsang").textContent = "올바른 날짜 형식을 입력하세요.";
return;
}
var startDate = parseDate(startDateStr);
var endDate = parseDate(endDateStr);
var timeDiff = Math.abs(endDate.getTime() - startDate.getTime());
var daysDiff = Math.ceil(timeDiff / (1000 * 3600 * 24));
document.getElementById("days-diff-beomsang").textContent = "날짜 차이: " + daysDiff + "일";
}
function calculateDate(event) {
event.preventDefault();
var startDateStr = document.getElementById("start-date-beomsang").value.replace(/-/g, '');
var additionalDaysStr = document.getElementById("additional-days-beomsang").value.replace(/[^-0-9]/g, '');
if (!validateDate(startDateStr)) {
document.getElementById("days-add-beomsang").textContent = "올바른 날짜와 며칠을 입력하세요.";
return;
}
if (!/^-?\d+$/.test(additionalDaysStr)) {
additionalDaysStr = 0;
}
var startDate = parseDate(startDateStr);
var additionalDays = parseInt(additionalDaysStr);
var resultDate = new Date(startDate);
resultDate.setDate(resultDate.getDate() + additionalDays);
var year = resultDate.getFullYear();
var month = resultDate.getMonth() + 1;
var day = resultDate.getDate();
var formattedDate = year + "년 " + month + "월 " + day + "일";
document.getElementById("days-add-beomsang").textContent = "시작 날짜로부터 " + additionalDays + "일 후: " + formattedDate;
}
function validateDate(dateStr) {
var dateRegex = /^\d{8}$/;
return dateRegex.test(dateStr);
}
function parseDate(dateStr) {
var year = dateStr.substr(0, 4);
var month = dateStr.substr(4, 2) - 1;
var day = dateStr.substr(6, 2);
return new Date(year, month, day);
}
</script>
<style>
.container-beomsang {
max-width: 500px;
margin: 0 auto;
padding: 20px;
}
.form-beomsang {
background: linear-gradient(to bottom, #f8f8f8, #e8e8e8);
border: 1px solid #ccc;
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);
margin-bottom: 20px;
}
label {
display: block;
margin-bottom: 8px;
font-weight: bold;
color: #333;
}
input[type="text"],
input[type="date"] {
width: 100%;
padding: 8px;
border: 1px solid #ccc;
border-radius: 4px;
outline: none;
}
input[type="text"] {
margin-bottom: 8px;
}
button {
padding: 10px 20px;
background-color: #4CAF50;
color: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
outline: none;
transition: background-color 0.3s;
}
button:hover {
background-color: #45a049;
}
label[id^="days-"] {
display: block;
margin-top: 8px;
margin-bottom: 24px;
color: #666;
font-style: italic;
}
</style>