2017-12-18 12 views
-1
를 사용하여 필요한 날짜 형식을 얻기 위해

내 방법은 다음과 같습니다방법 SimpleDateFormat의

public String changeCurrentDate(Integer variant){ 
    String currentTime = TestApp.getInstance().getDriver().findElement(By.id("common.HeaderComponent.mainLayout.serverTimeLabel")).getText(); 
    String currentDate = currentTime.substring(0, 10); 
    System.out.println("currentDate " +currentDate); 
    String date = null; 
    DateFormat df = new SimpleDateFormat("dd/mm/yyyy"); 
    try{ 
     Date date3 = df.parse(currentDate); 
     df.format(date3); 
     System.out.println("date3 " +date3); 
     Date previousDate = DateUtils.addDays(date3, variant); 
     date = previousDate.toString(); 
     return date; 
    }catch (Exception e){ 
    } 
    return date; 
} 

참고 : currentTime을 변수가 항상 "18/12/2017"나는 DD 날짜의 결과를 기대하고 있습니다 같은 값이/mm/yyyy 형식입니다. 하지만 항상 "Wed Jan 18 00:12:00 IST 2017"이라고 쓰고 있습니다.

실행 시간 결과 :

currentDate 18/12/2017 
date3 Wed Jan 18 00:12:00 IST 2017 
+1

스스로가 그렇지 날짜 : 출력 아래와 같이 반환

Date date3 = df.parse(currentDate); df.format(date3); String input = date3.toString(); String requiredDate = dateString(input); System.out.println("requiredDate: "+ requiredDate); 

:

public String dateString(String input) { SimpleDateFormat parser = new SimpleDateFormat("EEE MMM d HH:mm:ss zzz yyyy"); String formattedDate = ""; try { Date date = parser.parse(input); SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); formattedDate = formatter.format(date); } catch (ParseException e) { e.printStackTrace(); } return formattedDate; } 

쉽게 다음과 같은이 메소드를 호출 할 수 있습니다 :이 경우, 우리는 방법을 아래에 사용할 수 있습니다 'df.format (date3);을 호출 할 때 java 형식을 사용하면이 메소드는 SimpleDateFormat에 의해 형식화 된 String을 리턴하지만'date3'에 대해서는 아무것도 변경하지 않습니다. 따라서 반환 값을 사용하지 않고 형식을 호출하는 것은 의미가 없습니다. –

+1

왜 'mm'이 월을 의미한다고 생각하십니까? – Tom

+0

나는 오래된 구식'Date' 클래스를 사용하지 말 것을 권하고 특히 악명 높은'SimpleDateFormat' 클래스를 피하십시오. ['java.time', 현대 Java 날짜 및 시간 API] (https://docs.oracle.com/javase/tutorial/datetime/)는 너무 잘 작동합니다. –

답변

1

날짜의 toString()이 아닌 형식이 지정된 날짜를 반환해야합니다. 시도해보십시오.

0

df.format 단순히 때문에 코드에서이 행이 영향을주지 적용되는 형식 날짜의 캐릭터 라인 표현을 돌려줍니다.

대신 형식화 된 출력을 사용하면 코드를 변경해보십시오 :

public String changeCurrentDate(Integer variant){ 
    String currentTime = TestApp.getInstance().getDriver().findElement(By.id("common.HeaderComponent.mainLayout.serverTimeLabel")).getText(); 
    String currentDate = currentTime.substring(0, 10); 
    System.out.println("currentDate " +currentDate); 
    DateFormat df = new SimpleDateFormat("dd/mm/yyyy"); 
    Date date3 = df.parse(currentDate); 
    System.out.println("date3 " + df.format(date3)); 
    Date previousDate = DateUtils.addDays(date3, variant); 
    return previousDate.toString(); 
} 

또한 - 당신이를 제거해야하므로 그 나쁜, 예외를 잡을 수 있습니다.

0

우리는 더 편리하게 사용할 수있는 방법을 찾아야합니다.

requiredDate: 18/12/2017 
+0

@ChathuNM 형님! 보다 편리하고 재사용 가능한 방법을 사용하고 싶지 않으십니까? 그렇다면 한 번 더 생각하고 결정할 수 있습니다. –

+0

더 편리한 방법은 현대 자바 날짜와 시간 API 인 java.time입니다. –