[230417] Date | 정규표현식 | Canvas | D3 | chartJS | localStorage

윤지수·2023년 4월 17일
0
post-thumbnail

🪄 Date

let d = new Date();

d.getDate();	// 1부터 시작. 날짜 출력
d.getMonth();	// 0부터 시작. +1을 해야함
d.getDay();		// 0부터 시작. 0은 일요일

d.getHours();
d.getMinutes();
d.getSeconds();

d.getFullYear();
// d.getYear();	// 1900년도부터 연도 계산, 사용X

// 6월 표시하기 위해서는 -1. 달은 0부터 시작하기 때문
new Date(2023, 5, 30);
new Date(2023, 5, 30, 18);	// Fri Jun 30 2023 18:00:00 GMT+0900 (한국 표준시)
// 다음처럼 표현하면 가독성이 훨씬 좋다.
new Date("2023/1/20/10:00:00");	// Fri Jan 20 2023 10:00:00 GMT+0900 (한국 표준시)
let today = new Date(); // today의 지정 로캘(locale)은 KST

// UTC((Universal Time Coordinated))와 today의 지정 로캘 KST와의 차이는 -9시간
// locale을 활용하면 언어권에 맞게 입력과 출력을 수정하지 않고도 사용하는 언어권에 맞는 날짜를 처리할 수 있다
today.getTimezoneOffset() / 60;	// -9

today = new Date("2023/1/20/10:00:00");
today.toString();	// 'Fri Jan 20 2023 10:00:00 GMT+0900 (한국 표준시)'
today.toTimeString();	// '10:00:00 GMT+0900 (한국 표준시)'

// 국제표준시 기준 형식으로 표현
today.toISOString();	// '2023-01-20T01:00:00.000Z'

today.toLocaleString("ko-KR"); // '2023. 1. 20. 오전 10:00:00'
today.toLocaleString("en-US"); // '1/20/2023, 10:00:00 AM'
today.toLocaleString("ja-JP"); // '2023/1/20 10:00:00'
// 날짜의 차를 구하는 코드
// getTime은 1970년 1월 1일 00:00:00 UTC와 주어진 날짜 사이의 경과 시간(밀리 초)을 나타내는 숫자
function getDateDiff(d1, d2) {
  const date1 = new Date(d1);
  const date2 = new Date(d2);
  const diffDate = date1.getTime() - date2.getTime();
  // 일 == 밀리초 * 초 * 분 * 시
  return Math.abs(diffDate / (1000 * 60 * 60 * 24));
}

// 6월 30일까지 얼마나 남았을까?
getDateDiff("2023-04-17", "2023-06-30");	// 74

🪄 정규표현식

https://regexr.com/5nvc2

  • 일반 문자열
    /hello/gm

  • 문자열의 처음과 끝
    /^hello/gm : 처음에 hello
    /hello$/gm : 끝에 hello

  • 모든 문자열
    /./gm : 모든 문자열(*과 같은 역할)
    /....../gm : 모든 6개의 문자열
    /h.llo/g

    💡 만약 . 자체의 문자를 사용하고 싶다면 이스케이프 문자 사용: \.

  • 택 1
    대괄호 안에 있는 텍스트 중 택 1
    /h[eay]llo/gm : 대괄호 안의 문자 중 1개
    /h[ea]l../gm : 총 5개의 문자

  • 범위
    범위를 지정하여 매칭하고 싶을 때에는 - 사용
    /h[a-f]llo/gm
    /[a-zA-Z0-9]/gm : 모든 알파벳과 숫자를 찾음
    /[^a-zA-Z0-9]/gm : 나머지 문자열을 찾음

  • 부정
    해당 문자열을 제외하고 찾고 싶을 때에는 ^ 사용
    대괄호 안에 있다면 not을 의미
    /h[^ae]llo/gm

  • 그룹
    /(on|ues|rida)/gm : 그룹 1로 3개 중 매칭되는 패턴을 찾음
    /(on|ues)|(rida)/gm : 그룹1과 그룹2로 각각 매칭되는 패턴을 찾음

  • 수량자
    해당 문자가 몇 개 있는지를 명시하여 패턴을 찾음
    _* : 앞에 있는 문자가 0개 ~ N개
    _+ : 앞에 있는 문자가 1개 ~ N개
    _? : 앞에 있는 문자가 0개 ~ 1개(: 나올 수도 있고 안나올 수도 있다)

    {3} : 3개
    {3,} : 3개 이상
    {1,3} : 1개 ~ 3개
    {0,} == *
    {1,} == +
    {0,1} == ?

  • 캐릭터 클래스
    /\w/gm : 문자
    /\w{5} /gm : 5개의 글자와 스페이스 하나
    /\W/gm : not 문자
    /\d/gm : 숫자
    /\D/gm : not 숫자
    /\s/gm : 스페이스
    /\S/gm : not 스페이스

  • 한글 정규표현식
    [ㄱ-ㅎ|ㅏ-ㅣ|가-힣] : 모든 한글
    [^[가-힣]+$] : 한글만 허용
    [^[가-힣\\s]+$] : 공백 허용

💡 flag i(대소문자 구분X) 추가보다는 /[a-zA-Z]/gm
💡 [A-z] 안되는 이유: 아스키코드 참고. [, ₩, ], ^, _, `가 포함됨

🪄 Canvas | D3 | chartJS

https://github.com/yoonmallang22/JavaScript/tree/main/exercise/%EC%8B%9C%EA%B0%81%ED%99%94%20%EB%8F%84%EA%B5%AC

🪄 localStroage

  • setItem(key, value)
    키-값 쌍 저장
    저장할 때는 문자열로 변환해서 넣어야 한다(Object)
  • getItem(key)
    키에 해당하는 값 호출
  • removeItem(key)
    해당 값 삭제
  • clear()
    모든 데이터 삭제
  • key(index)
    인덱스(index)에 해당하는 키 호출
  • length
    저장된 항목의 개수

0개의 댓글