비개발자, CPO가 되기까지

19.12.06 개발 기록 - [Javascript] 뉴스피드의 몇 년 전, 몇 개월, 몇 일 전, 전 몇 시간 전, 몇 분 전, 몇 초 전 만들기

뚜까망치 루크 2019. 12. 7. 00:30

오늘의 포스팅 내용은 페이스북 뉴스피드나 인스타그램 포스팅 등에서 볼 수 있는 ~~시간 전을 계산 하여

Javascript로 구현하는 Syntax이다.

뉴스피드 기능에 있어서 굉장히 중요하고 필요한 기능이라고 생각되어 완벽하게 구현하고자 하는 욕심이 있었다!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
                 var crrtDay = new Date();
                   var crrtYear = crrtDay.getFullYear(),
                    crrtMonth = crrtDay.getMonth(),
                    crrtDate = crrtDay.getDate();
 
                     var nf_created_dttm = result.results.lamb_list[i].nf_created_dttm;
 
                    var createdDay = new Date(nf_created_dttm);
                    var createdYear = createdDay.getFullYear(),
                        createdMonth = createdDay.getMonth(),
                        createdDate = createdDay.getDate(),
                        createdHour = createdDay.getHours(),
                        createdMin = createdDay.getMinutes();
 
                        if (crrtYear > createdYear) {
                        minus = crrtYear - createdYear;
                        thirdSpan.innerHTML = minus + '년 전';
 
                            } else if (crrtMonth > createdMonth) {
                               minus = crrtMonth - createdMonth;
                            thirdSpan.innerHTML = minus + '개월 전';
 
                        } else if (crrtDate > createdDate) {
                            minus = crrtDate - createdDate;
                            thirdSpan.innerHTML = minus + '일 전';
 
                        } else if (crrtDate == createdDate) {
                            var crrtTime = crrtDate.getTime(),
                                createdTime = createdDate.getTime();
 
                        if (crrtTime > createdTime) {
    
                            sec = parseInt(crrtTime - createdTime) / 1000;
                            day = parseInt(sec / 60 / 60 /24);
                            sec = (sec - (day * 60 * 60 * 24));
                            hour = parseInt(sec / 60 / 60);
                            sec = (sec - (hour * 60 * 60));
                            min = parseInt(sec / 60);
                            sec = parseInt(sec - (min * 60));
 
                            if (hour > 0) {
                                thirdSpan.innerHTML = hour + '시간 전';
 
                            } else if (min > 0) {
                                thirdSpan.innerHTML = min + '분 전';
 
                           } else if (sec > 0) {
                                thirdSpan.innerHTML = sec + '초 전';
 
                            }
                        }
                    }
 
 
 
 
 

 

먼저 현재 시간을 가져오는 문법을 구현하고, 게시물이 만들어진 시간을 created_dttm을 이용하여 가져오도록 한다.

그리고 위 코드처럼 쭉쭉 가져와서 사용하면 되는데, 굳이 복기하거나 외울 필요 없이 긁어다가 쓰면 될 거 같아 여기서 줄이도록 한다.

아 참, 여기서 내가 몰랐던 parseInt() 라는 함수에 대해서 정리해보자.

1. parseInt 는 문자열을 정수로 변환하는 함수이다.

2. 사용 예시는 parseInt('string' , n) 로, string을 n 진법일 때의 값으로 변환해 준다.

3. n 값을 입력하지 않으면 자동으로 10진법으로 적용된다.

4. 소수 부분은 버린다.

오늘은 요정도만 알면 될 듯 하다!

 

이 포스팅을 보시는 분 중 제가 틀린 부분, 잘못 이해한 부분이 있어 알려주실만한 내용이 있다면 언제든 편하게 댓글 남겨주세요 :) 감사합니다 ! 

728x90
반응형