728x90
반응형

JAVA

- LocalTime -


KeyPoint
- LocalTime 클래스
- 시간 객체 접근 메서드
- 시간 객체의 필드값 변경
- 시간 객체의 비교

 


 

LocalTime 클래스

LocalTime 클래스: 시간을 표현하는데 사용되는 클래스

 

시간 객체 생성 메서드

  • now(): 현재 시간을 이용하여 새로운 객체를 생성하여 반환
  • of(): 전달된 파라미터값으로 특정 시간을 표현하는 새로운 객체를 생성하여 반환

 

▶ 예제

import java.time.LocalTime;

public class Main {
    public static void main(String[] args){

        LocalTime present = LocalTime.now();
        // static LocalTime of(int hour, int minute, int second);
        LocalTime lunch = LocalTime.of(11, 30, 20);

        System.out.println("현재 시간 : " + present);
        System.out.println("점심 시간 : " + lunch);

    }
}

 


 

시간 객체 접근 메서드
- getter 메서드

▶ getter 메서드

메서드 설명
int get(TemporalField field)
long getLong(TemporalField field)
해당 시간 객체의 명시된 필드의 값을 int형이나 long형으로 반환
int getHour() 해당 시간 객체의 시(HOUR_OF_DAY) 필드의 값을 반환
int getMinute() 해당 시간 객체의 분(MINUTE_OF_HOUR) 필드의 값을 반환
int getSecond() 해당 시간 객체의 초(SECOND_OF_MINUTE) 필드의 값을 반환
int getNano() 해당 시간 객체의 나노초(NANO_OF_SECOND) 필드의 값을 반환

 

▶ 예제

import java.time.LocalTime;

public class Main {
	public static void main(String[] args){
    	
        LocalTime present = LocalTime.now();
        
        System.out.println("현재 시간 : " + present);
		System.out.println("현재 시간 : " + present.getHour() + "시 " + present.getMinute() + "분");
        
	}
}

 


 

시간 객체의 필드값 변경
- with() 메서드
- plus()/minus() 메서드

with() 메서드

메서드 설명
LocalTime with(TemporalField field, long newValue) 해당 시간 객체에서 특정 필드를 전달된 값으로 설정한 새로운 시간 객체 반환
LocalTime withHour(int Hour) 해당 시간 객체에서 시(HOUR_OF_DAY) 필드를 전달된 값으로 설정한 새로운 시간 객체 반환
LocalTime withMinute(int minute) 해당 시간 객체에서 분(MINUTE_OF_HOUR) 필드를 전달된 값으로 설정한 새로운 시간 객체 반환
LocalTime withSecond(int second) 해당 시간 객체에서 초(SECOND_OF_MINUTE) 필드를 전달된 값으로 설정한 새로운 시간 객체 반환
LocalTime withNano(int nanoOfSecond) 해당 시간 객체에서 나노초(NANO_OF_SECOND) 필드를 전달된 값으로 설정한 새로운 시간 객체 반환

 

plus()/minus() 메서드

특정 필드의 값을 더하거나 뺼 수 있는 메서드

메서드 설명
plusHours(long hoursToAdd) 해당 시간 객체에서 시(HOUR_OF_DAY) 필드에 전달된 값을 더한 값으로 설정한 새로운 시간 객체 반환
plusMinutes(long minutesToAdd) 해당 시간 객체에서 분(MINUTE_OF_HOUR) 필드에 전달된 값을 더한 값으로 설정한 새로운 시간 객체 반환
plusSeconds(long secondsToAdd) 해당 시간 객체에서 초(SECOND_OF_MINUTE) 필드에 전달된 값을 더한 값으로 설정한 새로운 시간 객체 반환
plusNanos(long nanosToAdd) 해당 시간 객체에서 나노초(NANO_OF_SECOND) 필드에 전달된 값을 더한 값으로 설정한 새로운 시간 객체 반환

minusXXX는 plus와 반대

 

▶ 예제

import java.time.LocalTime;

public class Main {
    public static void main(String[] args){

        LocalTime present = LocalTime.now();
        LocalTime setTime = present.withHour(12);

        System.out.println("현재 시간 : " + present);
        System.out.println("현재 시간 : " + present.getHour() + "시 " + present.getMinute() + "분");
        System.out.println("바뀐 시간 : " + setTime.getHour() + "시 " + setTime.getMinute() + "분");
        System.out.println("더한 시간 : " + present.plusHours(1).getHour() + "시 " + present.plusMinutes(20).getMinute() + "분");
        System.out.println("뺀 시간 : " + present.minusHours(1).getHour() + "시 " + present.minusMinutes(20).getMinute() + "분");

    }
}

 


 

시간 객체의 비교
- isBefore() / isAfter()
메서드 설명
isBefore() 두 개의 시간 객체를 비교하여 현재 객체가 명시된 객체보다 앞선 시간인지 비교
isAfter() 두 개의 시간 객체를 비교하여 현재 객체가 명시된 객체보다 늦은 시간인지 비교

 

▶ 예제

import java.time.LocalTime;

public class Main {
    public static void main(String[] args){

        LocalTime present = LocalTime.now();
        // static LocalTime of(int hour, int minute, int second);
        LocalTime lunch = LocalTime.of(11, 30, 20);

        System.out.println("현재 시간: " + present.getHour() + "시 " + present.getMinute() + "분 " + present.getSecond() + "초");
        System.out.println("점심 시간: " + lunch.getHour() + "시 " + lunch.getMinute() + "분 " + lunch.getSecond() + "초");
        System.out.println(present.isBefore(lunch));        
        System.out.println(present.isAfter(lunch));        
    }
}

 


 

참고

http://www.tcpschool.com/java/java_time_localDateTime

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 


 

 

 

 

 

End.

heisely's 괴발개발 개발일지

728x90
반응형

'Programming > JAVA' 카테고리의 다른 글

[JAVA] CamelCase  (0) 2022.03.29
[JAVA] Dynamic Web Project > Maven Project 변환  (0) 2022.03.16
728x90
반응형

CamelCase

단어가 합쳐진 부분마다 맨 처음 글자를 대문자로 표기하는 방법

 

UpperCamelCase(PascalCase)
 - CamelCase에서 맨 앞글자를 대문자로 표기
LowerCamelCase
 - CamelCase에서 맨 앞글자를 소문자로 표기

 


 

유저 별 참여중인 프로젝트 목록과 전체 프로젝트 목록을 출력하는 것까지 한 다음에

프로젝트 별 참여인원을 클릭하면 참여인원 목록을 팝업창으로 띄우려고 작업하고 있었다.

 

분명 DBeaver에서 쿼리문을 실행하면 정상적으로 원하는 목록이 출력이 되는 것을 확인했고,

콘솔에서도 쿼리결과가 정상적으로 실행되는 것을 확인했다.

 

그러나 Service단에서 HashMap에 담아주는 과정에서 null 값이 들어가는 문제가 생겼다.

getMembers(projectSn) { // 참여중인 멤버 목록
    var self = this;
    var data = {
	    'projectSn' : projectSn
    }
    var jsonData = JSON.stringify(data)

    // 서버통신
    app.model.project.getMembers(jsonData).then(function(result){
    	console.log(result.data);
    	self.memberList = result.data.memberList;
    });
}

위와 같은 코드를 작성한 뒤 콘솔에 찍어보았다.

보는 것과 같이 parameter가 정상적으로 전송되고, 결과값이 정상적으로 나왔으나 front단에서 null 값을 받아왔다.

 

아무리 코드를 분석해도 무엇이 문제인지 못 찾고 있다가,,,

DB에서는 언더바(_)를 이용해서 단어구분을 하고, VO에서는 CamelCase로 작성을 하는데, 그것을 쿼리문에서 명시해주지 않아서 생긴 문제였다.

수정 전(좌) / 수정 후(우)

오른쪽과 같이 as XXX로 명시해주니 정상적으로 출력되었다.

초보적인 실수를 하다니...

전자정부프레임워크를 사용할 때에는 카멜케이스가 자동 적용되어서 그냥 작성하던 습관이 아직 버려지지 않았나보다..

 


 

 

 

End.

heisely's 괴발개발 개발일지

728x90
반응형

'Programming > JAVA' 카테고리의 다른 글

[JAVA] LocalTime  (0) 2022.04.21
[JAVA] Dynamic Web Project > Maven Project 변환  (0) 2022.03.16
728x90
반응형

Maven Project

- Dynamic Web Project를 Maven Project로-

 

Maven Project
- 프로젝트 구조와 내용을 기술하는 선언적 접근방식의 오픈소스 빌드 툴
- 컴파일과 동시에 빌드를 수행할 수 있으며 테스트를 병행하거나 서버측 디플로이 자원을 관리할 수 있음
- 프로젝트 종속 library들과 그 library에 영향을 미치는 Dependency 자원까지 관리할 수 있다는 것이 장점.

 


 

Vue.js 코드로 테스트 하던 중에 Back단에서 데이터를 가져와서 HashMap에 담아 return 해줬는데 Front단에서 받지 못 하는 문제가 발생했다.

에러코드를 구글링 해보니 pom.xml에 dependency를 추가하라는 말뿐.. jar 파일을 구하거나, dispatcher-servlet에 작성하는 방법은 찾을 수 없었다.

 

그래서 회사 동료의 조언을 받아 기존 Dynamic Web 프로젝트를 Maven 프로젝트로 변환하기로 했다.

처음에는 Maven Project를 새로 생성해서 코드를 옮겨야하나 걱정했는데, 다행히 기존의 프로젝트를 이클립스 내의 Convert 기능으로 바꿀 수 있었다.

 

프로젝트명 우클릭 > Configurer > Convert to Maven Project

Group Id / Artifact Id 입력 및 Packaging에 'jar' 입력 후 Finish

WebContent 하위에 pom.xml이 정상적으로 생성된 것을 확인할 수 있다.

 

 

 


End.

heisely's 괴발개발 개발일지

728x90
반응형

'Programming > JAVA' 카테고리의 다른 글

[JAVA] LocalTime  (0) 2022.04.21
[JAVA] CamelCase  (0) 2022.03.29

+ Recent posts