2011-12-30 4 views
6

Java/Android에서 앞에 0이없는 달을 포맷하는 방법이 있습니까?Android에서 앞자리에 0이없는 달

mTitleText.setText(String.format("Pick Date Time: %tm/%te/%tY %tk:%02d", 
       mTime,mTime,mTime,mTime,minute)); 

그리고 나는 그것이 2012년 2월 12일 13:23 반환 할 때이 2012년 2월 12일 13시 23분 반환

나는이 있어요.

+1

하위 문자열로 선행 0을 잘라낼 수 없습니까? 아니면 좀 더 우아한 솔루션을 원하십니까? –

답변

1

String.format() 대신에 SimpleDateFormat 클래스를 사용할 수 있습니까? 그것은 당신이 원하는 것을 할 것이지만, 더 많은 코드를 보지 않아도 당신이 사용할 수있는 Date 나 Calendar 객체가 있는지 알 수가 없습니다. 피에 관심있는 사람들을 위해

http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

15

JavaDocs 긴 :

Date mTime = new Date(); 
String text = new SimpleDateFormat("M/d/yyyy hh:mm").format(mTime); 

이 가능한 경우 0이 붙지 않는 달과 달의 날을 렌더링 M 대신 MM 대신 ddd 사용 .

+5

"h"중 하나를 몇 시간 내에 제거하여 그곳에있는 앞의 0을 제거 할 수도 있습니다. –

0

TL; DR

ZonedDateTime.now() 
      .format(DateTimeFormatter.ofPattern("M/d/uuuu HH:mm")) 

java.time

현대적인 방법은 번잡 한 기존 레거시 날짜 - 시간의 수업을 대신하는 java.time 클래스와 함께입니다.

클래스에서 DateTimeFormatter 클래스의 경우 두 자의 문자 코드 대신 월 및/또는 일의 한 문자 코드를 사용하여 서식 패턴을 정의하십시오.

현재 시간을 얻으십시오.

ZoneId z = ZoneId.of("America/Montreal"); 
ZonedDateTime zdt = ZonedDateTime.now(z); 

문자열을 생성하십시오. java.time

소개

String output = zdt.format(f) 

java.time 프레임 워크는 나중에 자바 8에 내장되어 있습니다. 이러한 클래스는 java.util.Date, .Calendar, & java.text.SimpleDateFormat과 같이 번거로운 이전 날짜 시간 클래스를 대체합니다.

Joda-Time 프로젝트는 현재 maintenance mode에 있으며, java.time으로 마이그레이션하는 것이 좋습니다.

자세히 알아 보려면 Oracle Tutorial을 참조하십시오. 그리고 많은 예제와 설명을 위해 스택 오버플로를 검색하십시오. java.time 기능의 대부분

ThreeTen-Backport는 자바 6 & 7 백 포팅 또한 (How to use… 참조)에 ThreeTenABPAndroid하도록 구성된다.

ThreeTen-Extra 프로젝트는 추가 클래스로 java.time을 확장합니다. 이 프로젝트는 향후 java.time에 추가 될 수있는 가능성을 입증합니다.여기에 Interval, YearWeek, YearQuartermore과 같은 유용한 클래스가 있습니다.