有沒有在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。
有沒有在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。
而不是使用String.format()
,你可以使用SimpleDateFormat
類嗎?它會做你想做的,但沒有看到更多的代碼,我不能告訴你是否有你可以使用的日期或日曆對象。
http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html
對於那些有興趣在避免冗長JavaDocs:
Date mTime = new Date();
String text = new SimpleDateFormat("M/d/yyyy hh:mm").format(mTime);
使用M
代替MM
和d
代替dd
將使月份和月份的一天沒有如果可能的話前導零。
你也可以在幾小時內刪除一個'h'來刪除那裏的前一個零。 – 2014-01-16 21:26:16
ZonedDateTime.now()
.format(DateTimeFormatter.ofPattern("M/d/uuuu HH:mm"))
現代的方式是與取代的麻煩舊的遺留日期時間類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 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
,YearQuarter
和more。
難道你不能只用一個子串切斷前導0嗎?或者你想要一個更優雅的解決方案? – 2011-12-30 16:34:57