2011-12-30 21 views
6

有沒有在Java/Android中沒有前導零的情況下格式化月份的方法?在Android中沒有前導零的月份

我得到這個:

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嗎?或者你想要一個更優雅的解決方案? – 2011-12-30 16:34:57

回答

15

對於那些有興趣在避免冗長JavaDocs

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

使用M代替MMd代替dd將使月份和月份的一天沒有如果可能的話前導零。

+5

你也可以在幾小時內刪除一個'h'來刪除那裏的前一個零。 – 2014-01-16 21:26:16

0

TL;博士

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

java.time

現代的方式是與取代的麻煩舊的遺留日期時間類java.time類。

DateTimeFormatter類中,定義了一個使用單個字符代碼的月份和/或月份而不是雙字符代碼的格式化模式。

DateTimeFormatter f = DateTimeFormatter.ofPattern("M/d/uuuu HH:mm"); 

獲取當前時刻。

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

生成一個字符串。

String output = zdt.format(f) 

關於java.time

java.time框架是建立在Java 8和更高版本。這些類代替了令人討厭的舊日期時間類,例如java.util.Date,.Calendar,& java.text.SimpleDateFormat

Joda-Time項目現在位於maintenance mode,建議遷移到java.time。請參閱Oracle Tutorial。並搜索堆棧溢出了很多例子和解釋。

大部分的java.time功能後移植到Java 6 和ThreeTenABP還適於Android(見How to use…)。

ThreeTen-Extra項目擴展java.time與其他類。這個項目是未來可能增加java.time的一個試驗場。您可以在這裏找到一些有用的類,如Interval,YearWeek,YearQuartermore

相關問題