728x90
프로젝트 하면서 만들어 사용했던
날짜와 시간 관련 자바스크립트 함수들을 공유합니다.
사용법을 함께 적어두니 외부 모듈처럼 사용하세요 ^_^
// 날짜관련 모듈
const days = ['일요일','월요일','화요일','수요일','목요일','금요일','토요일'];
const daysE = ['sun','mon','tue','wed','thu','fri','sat'];
export const Alldays = [['월요일','mon'],['화요일','tue'],['수요일','wed'],['목요일','thu'],['금요일','fri'],
['토요일','sat'],['일요일','sun'],['공휴일','pbhl']];
//작성일자 등이 최신(7일 이내)인지 확인
//strToDate('2022-05-01')
export function strToDate(str=""){
let dated = new Date(str);
let today = new Date();
if((today.getTime()-dated.getTime())/(1000*60*60*24)<=7){
return true;
}else{
return false;
}
}
//공휴일 여부 반환
//공휴일은 아래 holiday object에 미리 기재해줘야 합니다.
// 이 방식이 API 로 받아오는 것 보다 빠르고 간결해요
// isHoliday('2023-03-01') -> true
export function isHoliday(str="0000-00-00"){
const holiday = {
2022:{11:[],12:[25]},
2023:{
1:[1, 21, 22, 23, 24],
2:[],
3:[1],
4:[],
5:[5, 27],
6:[6],
7:[],
8:[15],
9:[28, 29, 30],
10:[3, 9],
11:[],
12:[25],
},
}
let dated = new Date(str);
let year = dated.getFullYear();
let month = dated.getMonth()+1;
let date= dated.getDate();
// @ts-ignore
return (holiday[year][month]).includes(date);
}
//공휴일이면 "pbhl"로, 아니라면 'mon'형태로 반환
export function whatDayE(str="0000-00-00"){
if(isHoliday(str)){
return "pbhl";
}else{
let dated = new Date(str);
return daysE[dated.getDay()]
}
}
//공휴일이면 "공휴일"로, 아니라면 '0요일'형태로 반환
export function whatDayK(str){
if(typeof str === "object"){
str = dayto8(str);
}
if(isHoliday(str)){
return "공휴일";
}else{
let dated = new Date(str);
return days[dated.getDay()]
}
}
//오늘 날짜를 string (0000-00-00) 형태로 반환
export function today8(){
let today = new Date();
return `${today.getFullYear()}-${today.getMonth()+1}-${today.getDate()}`
}
//오늘 날짜를 "0000년 00월 00일 00요일" 형태로 반환
export function todayk(){
let today = new Date();
return `${today.getFullYear()}년 ${today.getMonth()+1}월 ${today.getDate()}일 ${days[today.getDay()]}`
}
//특정 날짜를 0000-00-00형태로 입력하면 string (0000-00-00) 형태로 반환
export function dayto8(date){
return `${date.getFullYear()}-${date.getMonth()+1}-${date.getDate()}`
}
//특정 날짜를 0000-00-00형태로 입력하면 string (0000년 00월 00일 0요일) 형태로 반환
export function daytoLong(dateone="0000-00-00"){
let date = new Date(dateone);
return `${date.getFullYear()}년 ${date.getMonth()+1}월 ${date.getDate()}일 ${days[date.getDay()]}`
}
// 현재 시간을 hh:mm 형태로 반환
export function whattimenow(){
let date = new Date();
let hour = date.getHours()+"";
let minute = date.getMinutes()+"";
hour = (hour.length==1)?"0"+hour:hour+"";
minute = (minute.length==1)?"0"+minute:minute+"";
return hour+":"+minute;
}
//타임테이블 축약
//영업시간 등을 간결하게 표현하기 위해, 겹치는 영업시간을 가지는 요일을
//묶어서 표현해줌
export function timeTable(obj={},set=2){
let sett = ["_strt","_end"];
if(set==3){
sett = ["_str_tm","_end_tm"];
}
/**
* @type {string[]}
*/
let holi = [];
let work = {};
Alldays.forEach(i=>{
//휴일인경우
if(obj[i[1]+sett[0]]==""){
holi.push(i[0]);
}else{
let th = obj[i[1]+sett[0]]+" ~ "+obj[i[1]+sett[1]];
if(Object.keys(work).length==0){
work[th] = i[0];
}else{
let isnew = false;
let oldkey = "";
let keys = Object.keys(work)
keys.forEach(key => {
if(key==th){
isnew = false;
oldkey = key;
}else{
isnew=true;
}
});
if(isnew){
work[th] = i[0];
}else{
work[th] = work[th]+", "+i[0];
}
}
}
})
return {holiday:holi,work:work,keys:Object.keys(work)};
}
//수정을 하긴 해야하는데
datetimeToString(date=new Date()){
let monthst = String(date.getMonth()+1).padStart(2, "0");
let dayst = String(date.getDate()).padStart(2, "0");
let hour = String(date.getHours()).padStart(2, "0");
let minute = String(date.getMinutes()).padStart(2, "0");
let sec = String(date.getSeconds()).padStart(2, "0");
// return `${date.getFullYear()}년 ${date.getMonth()+1}월 ${date.getDate()}일 `
return date.getFullYear()+monthst+dayst+hour+minute+sec;
},
dtToStringFormat(date=new Date(),daysep="-",hoursep=":"){
let monthst = String(date.getMonth()+1).padStart(2, "0");
let dayst = String(date.getDate()).padStart(2, "0");
let hour = String(date.getHours()).padStart(2, "0");
let minute = String(date.getMinutes()).padStart(2, "0");
let sec = String(date.getSeconds()).padStart(2, "0");
// return `${date.getFullYear()}년 ${date.getMonth()+1}월 ${date.getDate()}일 `
return date.getFullYear()+daysep+monthst+daysep+dayst+" "+hour+hoursep+minute+hoursep+sec;
},
728x90
'자바스크립트 > 바닐라 JS' 카테고리의 다른 글
[시간복잡성] indexOf(), hash변환 후 값 추출 (0) | 2024.03.07 |
---|---|
[바닐라 js] 주민번호 <->생년월일, 성별 변환 (0) | 2023.01.14 |
폼 유효성 검사 - 모듈로 초간단하게 작성 (0) | 2023.01.14 |
댓글