초 또는 이와 유사한 것을 포함하도록 DateFormat.SHORT를 변경할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1846059

  •  12-09-2019
  •  | 
  •  

문제

내 응용 프로그램에서는 다음과 같은 코드를 사용하고 있습니다.

DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, locale);
df.setTimeZone(User.getTimeZone());
String s = df.format(d);

다양한 로케일에서 사용되는 애플리케이션에서 날짜 형식을 지정합니다.때로는 여기에 초를 추가하고 싶지만 SimpleDateFormat을 사용하여 하나의 특정 형식만 지정하고 싶지는 않습니다. 로케일 기반 형식 지정의 힘이 약해지기 때문입니다.

그렇다면 로케일 형식의 날짜를 약간 변경하는 방법에 대한 아이디어가 있는 사람이 있습니까?

건배,

크리스

도움이 되었습니까?

해결책

내가 찾은 유일한 간단한 솔루션은 FieldPosition을 사용하는 것입니다.

DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, locale);
df.setTimeZone(User.getTimeZone());
StringBuffer sb = new StringBuffer();
FieldPosition fp = new FieldPosition(DateFormat.MINUTE_FIELD);
sb = df.format(d, sb, fp);
sb.insert( fp.getEndIndex(), new SimpleDateFormat(":ss").format(d) );
String s = sb.toString();

이것은 문자열에서 분 필드의 위치를 ​​찾은 다음 그 바로 뒤에 초를 추가할 수 있게 해줍니다.내가 볼 수 있는 유일한 실제 문제는 약간 보기 흉한 것 외에는 ":"이 올바른 구분 기호가 아닐 수도 있고 이미 초가 포함되어 있을 수도 있다는 것입니다.그렇다면 누구든지 더 나은 답변을 볼 수 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top