2017-10-04 4 views
-1

나는 어떻게 작동 자바 SimpleDateFormat 이해가 안 돼요. Locale에 의해 날짜와 시간을 보여주고 싶습니다. 예를안드로이드 날짜 형식

Locale.setDefault(Locale.FRANCE); 
DateFormat correctDateFormatter =SimpleDateFormat.getTimeInstance(SimpleDateFormat.SHORT, Locale.getDefault()); 
correctDateFormatter.format(date); 

를 들어

그래서 나는

23시

같은 24 시간 형식으로 출력 기다려야하지만 난

처럼 그것을 얻을

11 PM

시간 및 날짜는 로컬 및 사용하지 않는 시간 패턴 ("hh : mm"등)에 따라 달라질 수 있습니다.

+2

https://stackoverflow.com/a/18734471/8089931 –

+0

로케일 기반 시간을 표시하려면 내 대답을 참조하십시오 – Pehlaj

+0

제 질문 다시보십시오 – Lavan

답변

1

이것은 당신이 시간대에 지정된 형식이 필요한 반환합니다

String timeString = SimpleDateFormat("HH:mm", Locale.FRANCE).format(date); 
+0

SimpleDateFormat.getTimeInstance 스타일을 사용하고 싶습니다 – Lavan

+0

그 경우에는 내가 원하는 것을 생각하지 않습니다. 스타일은 미리 정의 된 것 같습니다. 다음을 참조하십시오. https://docs.oracle.com/javase/tutorial/i18n/format/dateFormat.html –

+0

ok, 올바른 시간 패턴을 설정하는 방법은 로컬에 따라 다릅니다. 나는 am : pm을 유럽에서 보여주고 싶다. – Lavan

1
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm", Locale.FRANCE); 

H 24 시간 시간 12 시간 형식으로 사용됩니다.

1

시간 String formattedLocalTime = getFormattedLocalTimeFromUtc("2016-02-16T04:46:28Z", "MM/dd/yyyy");

final String LOCAL_TIME_FORMAT = "EEE MMM dd HH:mm:ss z yyyy"; //This is your local date format 
final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'"; //This is input date format 
final String TIMEZONE_UTC = "UTC"; 

public static String getFormattedLocalTimeFromUtc(String utcTimeStamp, String outputFormat) { 

    String formattedTime = null; 
    if(!TextUtils.isEmpty(utcTimeStamp)) { 

      String localTime = null; 
      SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT, Locale.getDefault()); 
      sdf.setTimeZone(TimeZone.getTimeZone(TIMEZONE_UTC)); 
      try { 
       localTime = sdf.parse(utcTimeStamp).toString(); 
      } 
      catch(ParseException e) { 
       e.printStackTrace(); 
      } 

      DateFormat inputDateFormat = new SimpleDateFormat(LOCAL_TIME_FORMAT); 
      inputDateFormat.setTimeZone(TimeZone.getTimeZone(TIMEZONE_UTC)); 
      Date date = null; 
      try { 
       date = inputDateFormat.parse(localTime); 
      } 
      catch(ParseException e) { 
       e.printStackTrace(); 
      } 

      DateFormat outputDateFormat = new SimpleDateFormat(outputFormat); 
      formattedTime = outputDateFormat.format(date); 
     } 
    } 
    return formattedTime; 
} 

HH.mm 형식을 시도

H : 하루에 시간 (0-23) 시간 : 오전/오후의 시간 (0-11)

+0

제 질문 다시보기 – Lavan

+0

로케일에 따라 시간을 표시하고 싶습니다. – Pehlaj

+0

예 장치 로컬에 따라 – Lavan

1

SDF 문서 확인 here

당신이 당신의 날짜를 포맷하는 데 사용할 수있는 문자의 다양한 종류가 있습니다

,

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm", Locale.FRANCE); 

이 일단 : 당신은 귀하의 시스템 날짜를 변경 그렇지 않은 경우

simpledateFormat.format(date); 
2
import java.text.DateFormat; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.Locale; 

public class CheckDate { 

    public static void main(String[] args) { 

     Date date = new Date(); 
     Locale.setDefault(Locale.FRANCE); 
     SimpleDateFormat correctDateFormatter = new SimpleDateFormat("HH:mm", Locale.FRANCE); 
     correctDateFormatter.format(date); 
     System.out.println("24 hrs format :: "+correctDateFormatter.format(date)); 
    } 

} 

을 24 시간 형식으로 프로그램에 올 수도 있습니다.