-
[java]날짜 더하기, 빼기 , 구하기Java/Basic 2019. 1. 28. 17:03반응형
2012년 개발을 시작하고 맨날 동일하게 사용하는것들이 있다 !
날짜 더하고 빼고 계산하고 ... Date... calendar... java에서 제공하는 극악무도함(?) 에 치를 떨며 유틸화 시켜서 사용했던거 같다.. java 1.6 버전 에서 말이다 ...
2019년 문득 내가 몇년동안 사용하고있는 이런 모듈들이 지금 제대로 되있는건가 ? 내가 생각하는것보다 더 좋은 방법들이 있지 않을까 ? 라는 생각과 함께 ... 찬찬히 보다보니 java 1.8 에서 ZoneDateTime, LocalDateTime 등... Joda-time 과 비슷한... 녀석이 생긴걸 확인했다...
와... 지금 java 11 이 나온마당에 난 그동안 고전 유물을 사용중이였던것...!! 변화가 시른 꼰대가 되긴 싫다 !
Zonedate , LocalTIme 모두 java.time.* 안에 모두 포함되있다 .
간단하게 날짜가 같은지 비교 하기도 편하고 예전보다 좀더 명확하게 사용가능한 메서드들을 제공하고있다 . ( 자세한건 Java API Docs에 잘나와있음
기본적으로 이녀석들은 ISO-8601 을 기반으로 하기 때문에 생각보다 표준화되있다고 보인다 .
특히 ZoneDate 경우는 타임존 정보도 가지고 이용가능하기 때문에 지역간 시차 계산같경우 응용하기 좋을거 같다. 특히 흥미로웠던건 Summer Time 에 대한 지원도 하고있다는거다 ... 예전엔 Joda-time 라이브러리나 기타 날짜관련 라이브러리 같은걸 써야만 뭔 다채로운 기능들을 쓸수 있었는데 jdk 만 있으면 된다는게 맘에든다.
( https://docs.oracle.com/javase/8/docs/api/java/time/ZonedDateTime.html)
바꾸자 ! 처음부터 귀찮더라도 만들자 !!
package utils;
import javax.swing.text.DateFormatter;
import java.time.DayOfWeek;
import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.chrono.IsoChronology;
import java.time.format.DateTimeFormatter;
import java.time.format.TextStyle;
import java.time.zone.ZoneRules;
import java.util.Locale;
/**
* 날짜 연산 유틸리티
*/
public class DateUtils {
/**
* 전달받은 값을 바탕으로 ZondeDatTime 값을 생성 하여 반환 ( 단순 날짜값만 계산시 사용 )
* @param originalDate
* @param originalTime
* @param strZoneId
* @return
*/
private ZonedDateTime getZoneData( String originalDate, String originalTime , String strZoneId ) {
String[] strDate= originalDate.split("-");
int year = Integer.parseInt( strDate[0] );
int month = Integer.parseInt( strDate[1] );
int day = Integer.parseInt( strDate[2] );
String[] strTime = originalTime.split(":");
int hour = Integer.parseInt( strTime[0] );
int minute = Integer.parseInt( strTime[1] );
int second = Integer.parseInt( strTime[2] );
int nano = 0 ;
ZoneId zoneIdData = ZoneId.of(strZoneId);
return ZonedDateTime.of( year, month, day , hour, minute, second, nano, zoneIdData);
}
/**
* 전달받은 값을 바탕으로 LocalData 값을 생성하여 변환 ( 시간 계산시 사용 )
* @param originalDate
* @param spritStr
* @return
*/
private LocalDate getLocalDate(String originalDate, String spritStr) {
String[] strDate= originalDate.split(spritStr);
int year = Integer.parseInt( strDate[0] );
int month = Integer.parseInt( strDate[1] );
int day = Integer.parseInt( strDate[2] );
return IsoChronology.INSTANCE.date(year, month, day );
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* 몇달 이후 구하기 ( 정해진 구분기호로 년월일 구분)
* @param originalDate
* @param afterDays
* @param spritStr
* @return String
*/
public String afterMonth( String originalDate , String originalTime , long afterMonth, String spritStr ){
LocalDate theDay = getLocalDate(originalDate, spritStr) ;
LocalDate next = theDay.plusMonths(afterMonth);
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd");
if( originalTime == null ) return next.toString();
else return next.toString()+" "+originalTime;
}
/**
* 몇달 이후 구하기 ( "-" 구분기호로 년월일 구분)
* @param originalDate
* @param afterDays
* @return String
*/
public String afterMonth( String originalDate , long afterMonth ){
String[] data = originalDate.split(" ");
String orgDate = data[0];
String orgTime = null ;
if ( data.length == 2 ) orgTime = data[1] ;
return afterMonth(originalDate, orgTime ,afterMonth , "-") ;
}
/**
* 몇주 이후 구하기 ( 정해진 구분기호로 년월일 구분)
* @param originalDate
* @param afterDays
* @param spritStr
* @return String
*/
public String afterWeeks( String originalDate, String originalTime , long afterWeek, String spritStr ){
LocalDate theDay = getLocalDate(originalDate, spritStr) ;
LocalDate next = theDay.plusWeeks(afterWeek);
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd");
if( originalTime == null ) return next.toString();
else return next.toString()+" "+originalTime;
}
/**
* 몇주 이후 구하기 ( "-" 구분기호로 년월일 구분)
* @param originalDate
* @param afterDays
* @return String
*/
public String afterWeeks( String originalDate , long afterWeek ){
String[] data = originalDate.split(" ");
String orgDate = data[0];
String orgTime = null ;
if ( data.length == 2 ) orgTime = data[1] ;
return afterWeeks(originalDate, orgTime ,afterWeek , "-") ;
}
/**
* 몇일 이후 구하기 ( 정해진 구분기호로 년월일 구분)
* @param originalDate
* @param afterDays
* @param spritStr
* @return String
*/
public String afterDays( String originalDate, String originalTime ,long afterDays, String spritStr ){
LocalDate theDay = getLocalDate(originalDate, spritStr) ;
LocalDate next = theDay.plusDays(afterDays);
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd");
if( originalTime == null ) return next.toString();
else return next.toString()+" "+originalTime;
}
/**
* 몇일 이후 구하기 ( "-" 구분기호로 년월일 구분)
* @param originalDate
* @param afterDays
* @return String
*/
public String afterDays( String originalDate , long afterDays ){
String[] data = originalDate.split(" ");
String orgDate = data[0];
String orgTime = null;
if ( data.length == 2 ) orgTime = data[1] ;
return afterDays(orgDate, orgTime ,afterDays , "-") ;
}
/**
* 지정한 시간 이후 몇시간 이후 값 반환
* strZoneId : ex) "Asia/Seoul"
* @param strZoneId
* @param originalDate
* @param originalTime
* @param afterHours
* @return String
*/
public String afterHour(String strZoneId, String originalDate, String originalTime , long afterHours ){
String[] strDate= originalDate.split("-");
String strFormater = "yyyy-MM-dd HH::mm:ss";
ZoneId zoneIdData = ZoneId.of(strZoneId);
DateTimeFormatter format = DateTimeFormatter.ofPattern(strFormater);
ZonedDateTime thisTime = getZoneData(originalDate, originalTime, strZoneId);
ZonedDateTime after = thisTime.plusHours(afterHours);
return after.format(format);
}
/**
* 지정한 시간 이후 몇시간 이후 값 반환
* strZoneId : ex) "Asia/Seoul"
* @param strZoneId
* @param originalDate
* @param originalTime
* @param afterHours
* @return String
*/
public String afterHour(String strZoneId, String originalFullDate ,long afterHours ){
String[] data = originalFullDate.split(" ");
String originalDate = data[0];
String originalTime = data[1];
return afterHour(strZoneId, originalDate ,originalTime, afterHours );
}
/**
* 지정한 시간 이후 몇시간 이후 값 반환 ( 국가 기본값 : 서울)
* strZoneId : ex) "Asia/Seoul"
* @param strZoneId
* @param originalDate
* @param originalTime
* @param afterHours
* @return String
*/
public String afterHour( String originalFullDate ,long afterHours ){
String[] data = originalFullDate.split(" ");
String originalDate = data[0];
String originalTime = data[1];
String strZoneId = "Asia/Seoul";
return afterHour(strZoneId, originalDate ,originalTime, afterHours );
}
/**
* 국가 시간 기준 몇분후 시간 반환
* strZoneId : ex) "Asia/Seoul"
* @param strZoneId
* @param originalDate
* @param originalTime
* @param afterMinute
* @return String
*/
public String afterMinute(String strZoneId, String originalDate, String originalTime , long afterMinute){
String strFormater = "yyyy-MM-dd HH::mm:ss";
DateTimeFormatter format = DateTimeFormatter.ofPattern(strFormater);
ZonedDateTime thisTime = getZoneData(originalDate, originalTime, strZoneId);
ZonedDateTime after = thisTime.plusMinutes(afterMinute);
return after.format(format);
}
/**
* 국가 시간 기준 몇분후 시간 반환
* strZoneId : ex) "Asia/Seoul"
* @param strZoneId
* @param originalDate
* @param originalTime
* @param afterMinute
* @return String
*/
public String afterMinute( String strZoneId , String originalFullDate, long afterMinute) {
String[] data = originalFullDate.split(" ");
String originalDate = data[0];
String originalTime = data[1];
return afterMinute( strZoneId, originalDate,originalTime,afterMinute);
}
/**
* 국가 시간 기준 몇분후 시간 반환( 한국 서울 기준 )
* strZoneId : ex) "Asia/Seoul"
* @param strZoneId
* @param originalDate
* @param originalTime
* @param afterMinute
* @return String
*/
public String afterMinute( String originalFullDate, long afterMinute) {
String[] data = originalFullDate.split(" ");
String originalDate = data[0];
String originalTime = data[1];
String strZoneId = "Asia/Seoul";
return afterMinute( strZoneId, originalDate,originalTime,afterMinute);
}
/**
* 표준시간 기준 몇초후 시간 반환
* strZoneId : ex) "UTC"
* @param strZoneId
* @param originalDate
* @param originalTime
* @param afterMinute
* @return
*/
public String afterSecond(String strZoneId, String originalDate, String originalTime , long afterSecond){
String strFormater = "yyyy-MM-dd HH::mm:ss";
ZoneId zoneIdData = ZoneId.of(strZoneId);
DateTimeFormatter format = DateTimeFormatter.ofPattern(strFormater);
ZonedDateTime thisTime = getZoneData(originalDate, originalTime, strZoneId);
ZonedDateTime after = thisTime.plusSeconds(afterSecond);
return after.format(format);
}
/**
* 표준시간 기준 몇초후 시간 반환
* strZoneId : ex) "UTC"
* @param strZoneId
* @param originalDate
* @param originalTime
* @param afterMinute
* @return
*/
public String afterSecond(String strZoneId, String originalFullDate, long afterSecond) {
String[] data = originalFullDate.split(" ");
String originalDate = data[0];
String originalTime = data[1];
return afterSecond(strZoneId, originalDate, originalTime, afterSecond);
}
/**
* 표준시간 기준 몇초후 시간 반환 ( UTC 기준 )
* strZoneId : ex) "UTC"
* @param strZoneId
* @param originalDate
* @param originalTime
* @param afterMinute
* @return
*/
public String afterSecond( String originalFullDate, long afterSecond) {
String[] data = originalFullDate.split(" ");
String originalDate = data[0];
String originalTime = data[1];
String strZoneId = "UTC";
return afterSecond(strZoneId, originalDate, originalTime, afterSecond);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* 몇달 이전 구하기 ( 정해진 구분기호로 년월일 구분)
* @param originalDate
* @param afterDays
* @param spritStr
* @return String
*/
public String beforeMonth( String originalDate , String originalTime , long afterMonth, String spritStr ){
LocalDate theDay = getLocalDate(originalDate, spritStr) ;
LocalDate next = theDay.minusMonths(afterMonth);
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd");
if( originalTime == null ) return next.toString();
else return next.toString()+" "+originalTime;
}
/**
* 몇달 이전 구하기 ( "-" 구분기호로 년월일 구분)
* @param originalDate
* @param afterDays
* @return String
*/
public String beforeMonth( String originalDate , long afterMonth ){
String[] data = originalDate.split(" ");
String orgDate = data[0];
String orgTime = null ;
if ( data.length == 2 ) orgTime = data[1] ;
return beforeMonth(originalDate, orgTime ,afterMonth , "-") ;
}
/**
* 몇주 이전 구하기 ( 정해진 구분기호로 년월일 구분)
* @param originalDate
* @param afterDays
* @param spritStr
* @return String
*/
public String beforeWeeks( String originalDate, String originalTime , long afterWeek, String spritStr ){
LocalDate theDay = getLocalDate(originalDate, spritStr) ;
LocalDate next = theDay.minusWeeks(afterWeek);
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd");
if( originalTime == null ) return next.toString();
else return next.toString()+" "+originalTime;
}
/**
* 몇주 이전 구하기 ( "-" 구분기호로 년월일 구분)
* @param originalDate
* @param afterDays
* @return String
*/
public String beforeWeeks( String originalDate , long afterWeek ){
String[] data = originalDate.split(" ");
String orgDate = data[0];
String orgTime = null ;
if ( data.length == 2 ) orgTime = data[1] ;
return beforeWeeks(originalDate, orgTime ,afterWeek , "-") ;
}
/**
* 몇일 이전 구하기 ( 정해진 구분기호로 년월일 구분)
* @param originalDate
* @param afterDays
* @param spritStr
* @return String
*/
public String beforeDays( String originalDate ,String originalTime, long afterDays, String spritStr ){
LocalDate theDay = getLocalDate(originalDate, spritStr) ;
LocalDate next = theDay.minusDays(afterDays);
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd");
if( originalTime == null ) return next.toString();
else return next.toString()+" "+originalTime;
}
/**
* 몇일 이전 구하기 ( "-" 구분기호로 년월일 구분)
* @param originalDate
* @param afterDays
* @return String
*/
public String beforeDays( String originalDate , long afterDays ){
String[] data = originalDate.split(" ");
String orgDate = data[0];
String orgTime = null;
if ( data.length == 2 ) orgTime = data[1] ;
return beforeDays(orgDate, orgTime , afterDays , "-") ;
}
/**
* 지정한 시간 이전 몇시간 값 반환
* strZoneId : ex) "Asia/Seoul"
* @param strZoneId
* @param originalDate
* @param originalTime
* @param afterHours
* @return String
*/
public String beforeHour(String strZoneId, String originalDate, String originalTime , long beforeHours ){
String[] strDate= originalDate.split("-");
String strFormater = "yyyy-MM-dd HH::mm:ss";
ZoneId zoneIdData = ZoneId.of(strZoneId);
DateTimeFormatter format = DateTimeFormatter.ofPattern(strFormater);
ZonedDateTime thisTime = getZoneData(originalDate, originalTime, strZoneId);
ZonedDateTime before = thisTime.minusHours(beforeHours);
return before.format(format);
}
/**
* 지정한 시간 이전 몇시간 값 반환
* strZoneId : ex) "Asia/Seoul"
* @param strZoneId
* @param originalDate
* @param originalTime
* @param afterHours
* @return String
*/
public String beforeHour(String strZoneId, String originalFullDate ,long afterHours ){
String[] data = originalFullDate.split(" ");
String originalDate = data[0];
String originalTime = data[1];
return beforeHour(strZoneId, originalDate ,originalTime, afterHours );
}
/**
* 지정한 시간 이전 몇시간 값 반환 ( 국가 기본값 : 서울)
* strZoneId : ex) "Asia/Seoul"
* @param strZoneId
* @param originalDate
* @param originalTime
* @param afterHours
* @return String
*/
public String beforeHour( String originalFullDate ,long afterHours ){
String[] data = originalFullDate.split(" ");
String originalDate = data[0];
String originalTime = data[1];
String strZoneId = "Asia/Seoul";
return beforeHour(strZoneId, originalDate ,originalTime, afterHours );
}
/**
* 국가 시간 기준 몇분이전 시간 반환
* strZoneId : ex) "Asia/Seoul"
* @param strZoneId
* @param originalDate
* @param originalTime
* @param afterMinute
* @return String
*/
public String beforeMinute(String strZoneId, String originalDate, String originalTime , long afterMinute){
String strFormater = "yyyy-MM-dd HH::mm:ss";
DateTimeFormatter format = DateTimeFormatter.ofPattern(strFormater);
ZonedDateTime thisTime = getZoneData(originalDate, originalTime, strZoneId);
ZonedDateTime before = thisTime.minusMinutes(afterMinute);
return before.format(format);
}
/**
* 국가 시간 기준 몇분이전 시간 반환
* strZoneId : ex) "Asia/Seoul"
* @param strZoneId
* @param originalDate
* @param originalTime
* @param afterMinute
* @return String
*/
public String beforeMinute( String strZoneId , String originalFullDate, long afterMinute) {
String[] data = originalFullDate.split(" ");
String originalDate = data[0];
String originalTime = data[1];
return beforeMinute( strZoneId, originalDate,originalTime,afterMinute);
}
/**
* 국가 시간 기준 몇분이전 시간 반환( 한국 서울 기준 )
* strZoneId : ex) "Asia/Seoul"
* @param strZoneId
* @param originalDate
* @param originalTime
* @param afterMinute
* @return String
*/
public String beforeMinute( String originalFullDate, long afterMinute) {
String[] data = originalFullDate.split(" ");
String originalDate = data[0];
String originalTime = data[1];
String strZoneId = "Asia/Seoul";
return beforeMinute( strZoneId, originalDate,originalTime,afterMinute);
}
/**
* 표준시간 기준 몇초이전 시간 반환
* * strZoneId : ex) "UTC"
* @param strZoneId
* @param originalDate
* @param originalTime
* @param afterMinute
* @return
*/
public String beforeSecond(String strZoneId, String originalDate, String originalTime , long afterSecond){
String strFormater = "yyyy-MM-dd HH::mm:ss";
ZoneId zoneIdData = ZoneId.of(strZoneId);
DateTimeFormatter format = DateTimeFormatter.ofPattern(strFormater);
ZonedDateTime thisTime = getZoneData(originalDate, originalTime, strZoneId);
ZonedDateTime before = thisTime.minusSeconds(afterSecond);
return before.format(format);
}
/**
* 표준시간 기준 몇초이전 시간 반환
* strZoneId : ex) "UTC"
* @param strZoneId
* @param originalDate
* @param originalTime
* @param afterMinute
* @return
*/
public String beforeSecond(String strZoneId, String originalFullDate, long afterSecond) {
String[] data = originalFullDate.split(" ");
String originalDate = data[0];
String originalTime = data[1];
return beforeSecond(strZoneId, originalDate, originalTime, afterSecond);
}
/**
* 표준시간 기준 몇초 이전 시간 반환 ( UTC 기준 )
* @param originalDate
* @param originalTime
* @param afterMinute
* @return
*/
public String beforeSecond( String originalFullDate, long afterSecond) {
String[] data = originalFullDate.split(" ");
String originalDate = data[0];
String originalTime = data[1];
String strZoneId = "UTC";
return beforeSecond(strZoneId, originalDate, originalTime, afterSecond);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* 지정한 날짜의 요일 정보
* type : shor, full , narrow
* locale : ex ) Locale.KOREA
* @param originalDate
* @param type
* @param locale
* @return String
*/
public String getDayOfWeek(String originalDate , String type , Locale locale ){
String[] strDate= originalDate.split("-");
int year = Integer.parseInt( strDate[0] );
int month = Integer.parseInt( strDate[1] );
int day = Integer.parseInt( strDate[2] );
LocalDate thisDays = LocalDate.of(year, month, day);
DayOfWeek dayOfWeek = thisDays.getDayOfWeek();
TextStyle strType ;
switch ( type ) {
case "full" : strType = TextStyle.FULL;
break;
case "narrow" : strType = TextStyle.NARROW ;
break;
default: strType = TextStyle.SHORT ;
break;
}
return dayOfWeek.getDisplayName(strType, locale );
}
/**
* 두 날짜사이 기간 반환
* @param startDate
* @param endDate
* @return
*/
public int getBetWeenDate(String startDate , String endDate ){
LocalDate stDay = getLocalDate(startDate, "-");
LocalDate edDay = getLocalDate(endDate , "-");
return edDay.compareTo(stDay);
}
/**
* 두 날짜사이 기간 시간 반환
* @param startDate
* @param endDate
* @return
*/
public long getBetWeenTime(String startDate , String endDate ,String getTimeType ){
String[] strStart = startDate.split(" ");
String[] endStart = endDate.split(" ");
ZonedDateTime stDay = getZoneData(strStart[0], strStart[1], "Asia/Seoul");
ZonedDateTime edDay = getZoneData(endStart[0] , endStart[1] , "Asia/Seoul");
Duration d = Duration.between( stDay , edDay );
long toTime= 0 ;
if(getTimeType.equals("min")) {
return d.toMinutes();
}
else if(getTimeType.equals("hour")) {
return d.toHours();
}else if(getTimeType.equals("sec")) {
return d.toMillis()/1000;
}else {
return d.toMinutes();
}
}
/**
* 현재 시간 가져오기
* @return
*/
public String getNow(){
LocalDateTime curDate = LocalDateTime.now();
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
return curDate.format(df).toString();
}
}결론부터 말하면 대충 만들었다 이곳저곳 사용하는곳을 찾아서 그냥 내 입맛대로 만들었다 .... 분명 또 쓸거 같다 ... 웹프로그래밍을 하는한 날짜랑은 평생(?) 갈거 같다 . 일단 이곳에 남겨두고 나중에 혹여나 필요한데 찾기 힘들땐 복사해서 써야겠다 .
만들면서 느낀거지만 참 별것도 아닌데 만들기 귀찮다...
/**
* DBUtils Class Example
*/
public static void test_DateUtils(){
DateUtils du = new DateUtils();
System.out.println("====================================================================================================");
System.out.println(du.getNow() );
System.out.println("====================================================================================================");
System.out.println(du.getDayOfWeek("2018-01-01", "short", Locale.KOREA ) );
System.out.println(du.getBetWeenDate("2018-01-01","2018-01-03") );
System.out.println(du.getBetWeenTime("2018-01-01 23:00:00","2018-01-01 23:45:44", "hour") );
System.out.println(du.getBetWeenTime("2018-01-01 23:00:00","2018-01-01 23:45:44", "min") );
System.out.println(du.getBetWeenTime("2018-01-01 23:00:00","2018-01-01 23:45:44", "sec") );
System.out.println("====================================================================================================");
System.out.println(du.afterDays("2018-01-01",5 ));
System.out.println(du.afterWeeks("2018-01-01",1 ));
System.out.println(du.afterMonth("2018-01-31",1 ));
System.out.println("====================================================================================================");
System.out.println(du.afterMinute("2018-01-01 22:22:22",5 ));
System.out.println(du.afterHour("2018-01-01 22:22:22",5 ));
System.out.println(du.afterSecond("2018-01-01 22:22:22",5 ));
System.out.println("====================================================================================================");
System.out.println(du.beforeMonth("2018-01-01",1 ));
System.out.println(du.beforeWeeks("2018-01-01",1 ));
System.out.println(du.beforeDays("2018-01-01",3 ));
System.out.println(du.beforeHour("2018-01-01 22:22:22",5 ));
System.out.println(du.beforeMinute("2018-01-01 22:22:22",5 ));
System.out.println(du.beforeSecond("2018-01-01 22:22:22",5 ));
System.out.println("====================================================================================================");
}무시하게 실행 해보자 !!
결론은... ?
잘되네 ....
어느순간부터 자바에서 날짜처리하는게 어렵다고 느껴지다보니 라이브러리 쓰기도 귀찮고 해서 Javascript 에서 처리를 더 많이 해서
처리 했던거 같다. 뭐.. 물론 javascript 도 그닥 쉽다고 생각은 안든다 그래도 data, calendar보단 낫다고 생각했을뿐...
서버에서 날짜처리가 필요하다면 만들어놓은걸 써봐야겠다.
대충 만큼 써보면 뭔가 문제가 더보이지 않을까 싶다.
이왕 시간한거 다른걸 뭘 만들어 봐야 할지 이참에 쭈욱~~ 봐야겠다.
반응형'Java > Basic' 카테고리의 다른 글
Logback 시간과 system 시간이 다를때... (0) 2019.06.25 JVM( GC) 이해하기 (0) 2019.04.26 BigDecimal (feat. 소수점 계산) (1) 2019.03.26 [java] Http get,post 통신 (0) 2019.01.28