2011-12-30 41 views
6

Có cách nào để định dạng Tháng không có số 0 đứng đầu trong Java/Android không?Tháng không có số 0 đứng đầu trong Android

Tôi nhận điều này:

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

Và nó sẽ trả về 2012/02/12 13:23 khi tôi muốn nó trở 2012/02/12 13:23.

+1

Bạn không thể chỉ cắt bỏ số 0 dẫn đầu bằng chuỗi con? Hay bạn muốn một giải pháp thanh lịch hơn? –

Trả lời

1

Thay vì sử dụng String.format(), bạn có thể sử dụng lớp SimpleDateFormat không? Nó sẽ làm những gì bạn muốn, nhưng không nhìn thấy nhiều mã của bạn Tôi không thể nói nếu bạn có một đối tượng Ngày hoặc Lịch bạn có thể sử dụng.

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

15

Đối với những người quan tâm đến việc tránh dài JavaDocs:

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

Sử dụng M thay vì MMd thay vì dd sẽ làm cho ngày của tháng và tháng mà không số không hàng đầu nếu có thể .

+5

Bạn cũng có thể loại bỏ một trong các 'h' trong giờ để loại bỏ số 0 trước đó. –

0

tl; dr

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

java.time

Cách hiện đại với các lớp java.time mà thay thế các lớp học ngày thời gian di sản cũ phiền hà.

Trong lớp DateTimeFormatter, hãy xác định mẫu định dạng sử dụng các mã ký tự đơn cho mã tháng và/hoặc ngày trong tháng thay vì mã hai ký tự.

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

Lấy thời điểm hiện tại.

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

Tạo chuỗi.

String output = zdt.format(f) 

Về java.time

Khung java.time được xây dựng vào Java 8 và sau đó. Các lớp này thay thế các lớp ngày giờ phiền hà cũ như java.util.Date, .Calendar, & java.text.SimpleDateFormat.

Dự án Joda-Time, hiện đang ở maintenance mode, khuyên di chuyển sang java.time.

Để tìm hiểu thêm, hãy xem Oracle Tutorial. Và tìm kiếm Stack Overflow cho nhiều ví dụ và giải thích.

Hầu hết các chức năng java.time được back-chuyển đến Java 6 & 7 trong ThreeTen-Backport và tiếp tục thích nghi với Android trong ThreeTenABP (xem How to use…).

Dự án ThreeTen-Extra mở rộng java.time với các lớp bổ sung. Dự án này là một nền tảng chứng minh cho những bổ sung có thể có trong tương lai vào java.time.Bạn có thể tìm thấy một số lớp học hữu ích tại đây như Interval, YearWeek, YearQuartermore.

Các vấn đề liên quan