• 티스토리 홈
  • 프로필사진
    chantleman
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
chantleman
  • 프로필사진
    chantleman
    • 분류 전체보기 (322)
      • 프로젝트 (1)
      • react (2)
      • 코딩테스트 (133)
        • lv0 (101)
        • lv1 (10)
        • lv2 (7)
        • lv3 (15)
      • 오류 (11)
      • 리눅스 (2)
      • 닷넷 (0)
      • 자바 (67)
        • spring (7)
      • js (35)
      • 오라클 (40)
        • PLSQL (4)
      • cs (7)
      • 도커 aws (3)
      • 단축키 (3)
      • 나만봐 (0)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • date, calendar
        2024년 07월 25일
        • chantleman
        • 작성자
        • 2024.07.25.:31

         

         

        getTime(): 1970년 1월 1일 0시로부터 지난 시간을 나타냄

         

            Date date = new Date();
            long time = date.getTime();

         

         


        1 ~ 100만까지 더하는데 걸리는 시간 출력

            long p=0;
            Date d1 = new Date(); //d1을 불러왔을 그 당시의 시간
        
            for(long i =1;i<=1000000;i++)
            {		
                p+=i;			
            }
            Date d2 = new Date(); //d2를 불러올 당시의 시간
        
            long time = d2.getTime() - d1.getTime();
            System.out.println(time+"ms");

         

        프로그램이 느리다 싶으면 이런식으로 date 객체들을 생성해서 시간을 체크해줘야합니다.

         

        벤치마크(알고리즘이 얼마나 효율적인지 체크)

        : 한 프로젝트에서 여러 기능을 개발하게 되는데 만약 속도가 느리면
        어느부분에서 병목현상이 발생했는지 확인해야됩니다.

        그럴때 date 를 이용해서 속도 체크 합니다

         

         

        디비튜닝

        : 보통 DB에서 쿼리 갖고올때 속도 차이가 많이 발생하기때문에

        만약 느리면 DB 쿼리를 확인해보고 쿼리를 수정해야합니다

         

         

         


         

        날짜 형식 맞추기

         

        HH : 0~23

        hh : 1~12

        a : am/pm

            //SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd a hh:mm:ss");
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String str = sdf.format(date);
            System.out.println(str);

         


         

        date → String  → date  변환

            public void method5() {
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                String str= ScanUtil.nextLine("날짜: ");
        
                //TO_DATE
                try {
                    Date date = sdf.parse(str); 
                    System.out.println(date);
                } catch (ParseException e) {
                    System.out.println("년-월-일 형식으로 하세요");
                }
            }

         

        parse는 입력받을 때 형식을 다르게 할수도 있기 때문에 예외처리를 해줘야합니다.

         

         


         

         

        오늘로부터 며칠 뒤는 어떤 날짜인지 출력

         

         

        Date 사용해서 하기

            public void method6() {
                int days = ScanUtil.nextInt("며칠 뒤: ");
        
                Date date = new Date();
                Date date2 = new Date(date.getTime()+1000L*60*60*24*days); //int범위 벗어나서 L붙임
        
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
                String str = sdf.format(date2);
                System.out.println(str);
            }

         

         

         

        Calendar사용해서 하기

            public void method2() {
                int day = ScanUtil.nextInt("더할 날짜 입력: ");
                Calendar cal = Calendar.getInstance();
                cal.add(Calendar.DATE, day);
        
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
                Date date = cal.getTime();
                System.out.println(sdf.format(date));		
            }

         

         


         

         

        오늘로부터 특정 날짜가 며칠 뒤인지 출력

         

            public void method7() {
                String str = ScanUtil.nextLine("날짜:");
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");		
                Date date;
                try {
                    date = sdf.parse(str); //특정날짜 date로 형변환
                    Date cur = new Date(); //현재 날짜
        
                    long time = date.getTime() - cur.getTime();
                    long days = time/1000/60/60/24;
                    System.out.println(days);	
                } catch (ParseException e) {
                    System.out.println("날짜 형식 yyyy-mm-dd로 해주세요");
                }	
            }

         


         

        데이터 변경 set

            Calendar cal = Calendar.getInstance();
        
            cal.set(Calendar.YEAR, 2028);
            cal.set(Calendar.DATE, 1);
            cal.set(Calendar.HOUR, 1);

        현재 날짜 년도를 2028년으로, 일을 1일로, 시간을 한시로 설정

         

         

        시간 더하기

            Calendar cal = Calendar.getInstance();
        
            cal.add(Calendar.DATE, 100);   //100일 뒤 날짜
            cal.add(Calendar.HOUR,30);     //30시간 뒤
            cal.add(Calendar.DATE, -1);    //전 날짜

        현재 날짜에서 100일 뒤, 30시간 뒤의 전 날짜 출력

         

         

         

        값가져오기

            int day = cal.get(Calendar.DATE);
            System.out.println(day);

         

         

        Calendar → date

            Date date = cal.getTime();
            System.out.println(date);

         

         

         


         

            import java.util.Calendar;
            import java.text.SimpleDateFormat;
            import java.util.Date;
            import java.util.Scanner;
            import kr.or.ddit.util.ScanUtil;
        
            public class CalendarExample {
                public static void main(String[] args) {
                    Scanner scanner = new Scanner(System.in);
        
                    System.out.print("연도를 입력하세요 (예: 2024): ");
                    int year = scanner.nextInt();
        
                    System.out.print("월을 입력하세요 (1-12): ");
                    int month = scanner.nextInt();
        
                    Calendar cal = Calendar.getInstance();
                    cal.set(year, month - 1, 1); // 월은 0부터 시작하므로 month - 1
        
                    while(true) {
                        if (month < 1 || month > 12) {
                            System.out.println("잘못된 월입니다. 1에서 12 사이의 값을 입력하세요.");
                            return;
                        }
        
                        // 첫 번째 날의 요일과 최대 일 수를 계산
                        int firstDayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
                        int maxDayOfMonth = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
        
                        // 현재 달을 출력하기 위한 SimpleDateFormat 객체를 생성
                        Date date = cal.getTime();
                        SimpleDateFormat sdf = new SimpleDateFormat(" yyyy년 MM월 ");
        
                        System.out.println("===================" + sdf.format(date) + "====================");
                        System.out.println("일\t월\t화\t수\t목\t금\t토");
                        System.out.println("===================================================");
        
                        // 첫 번째 날 이전의 공백을 출력
                        for (int i = 1; i < firstDayOfWeek; i++) {
                            System.out.print("\t");
                        }
        
                        // 달력 날짜를 출력
                        for (int day = 1; day <= maxDayOfMonth; day++) {
                            System.out.print(day + "\t");
                            if ((day + firstDayOfWeek - 1) % 7 == 0) {
                                System.out.println();
                            }
                        }
        
                        System.out.println();
        
                        String str = ScanUtil.nextLine("< 이전달  다음달  >");
                        if(str.equals("<")){
                            cal.add(Calendar.MONTH,-1);
                        }
                        if(str.contentEquals(">")) {
                            cal.add(Calendar.MONTH,1);
                        }
        
                    }
                }
            }

        calendar클래스에서 월을 0~11까지 인덱스로 처리하기 때문에 1을 더해줘야함

         

        > 입력하면 다음달로

        < 입력하면 이전달로 넘어가기

        728x90

        '자바' 카테고리의 다른 글

        collection  (0) 2024.07.26
        hash  (0) 2024.07.26
        try-catch, throw Exception  (2) 2024.07.24
        간단한 게시판 예제  (1) 2024.07.24
        인터페이스  (2) 2024.07.24
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바