Có định dạng ngày để hiển thị ngày trong tuần trong java không?


127

Tôi biết các định dạng ngày, chẳng hạn như
"yyyy-mm-dd"- hiển thị ngày ở định dạng 2011-02-26
"yyyy-MMM-dd"- trong đó hiển thị ngày ở định dạng2011-FEB-26

được sử dụng trong ví dụ:

SimpleDateFormat formatter = new SimpleDateFormat(
                "yyyy/MMM/dd ");

Tôi muốn một định dạng sẽ giúp tôi hiển thị ngày trong tuần như thế nào 2011-02-MONhoặc bất cứ điều gì. Tôi chỉ muốn ngày trong tuần được hiển thị bằng các ký tự theo tháng và năm. Bạn có thể cho tôi biết một định dạng như thế này?


1
Làm thế nào về việc chỉ sử dụng ddnhư định dạng?
Johan Sjöberg

3
Tôi chắc chắn rằng các tài liệu API ( download.oracle.com/javase/1.4.2/docs/api/java/text/iêu ), sẽ vui lòng cung cấp cho bạn câu trả lời.
M. Jessup

1
"ngày" nghĩa là gì - ngày trong tuần, ngày trong tháng. Trong ví dụ của bạn, toàn bộ ngày được hiển thị. Vui lòng hiển thị đầu vào và đầu ra chính xác mà bạn muốn.
Bozho

2
Theo một lời khuyên chung, tốt hơn là -chỉ sử dụng ký hiệu với các ngày ở định dạng ISO (tức là năm-tháng-ngày). Dấu gạch ngang đã được chọn ở đó vì nó không được sử dụng cho bất kỳ định dạng ngày nào khác vào thời điểm đó, để tránh nhầm lẫn, và bây giờ mọi người đang sử dụng thứ tự tùy chỉnh của mình với dấu gạch ngang ...
Paŭlo Ebermann

Câu trả lời:


321

Điều này sẽ hiển thị 'Tue':

new SimpleDateFormat("EEE").format(new Date());

Điều này sẽ hiển thị 'Thứ ba':

new SimpleDateFormat("EEEE").format(new Date());

Điều này sẽ hiển thị 'T':

new SimpleDateFormat("EEEEE").format(new Date());

Vì vậy, ví dụ cụ thể của bạn sẽ là:

new SimpleDateFormat("yyyy-MM-EEE").format(new Date());

5
Giải pháp đẹp! Điều tôi đang tìm kiếm là: Thứ Hai, 04/04/2016. Vì vậy, trong trường hợp của tôi, new SimpleDateFormat("EEEE, dd/MM/yyyy");nếu nó giúp được ai đó trong tương lai.
AuroMetal

1
OK, nó hoạt động. EEEEhiển thị toàn bộ tên của ngày trong tuần - tức là 'Thứ Hai', 'Thứ Ba', v.v.
kosiara - Bartosz Kosarzycki

Tôi đã không thực sự nghĩ rằng trang web này thậm chí sẽ xuất hiện, chứ đừng nói đến việc java cuối cùng cũng sẽ được bảo lãnh vào ngày. Nó không trả lời về mặt kỹ thuật câu hỏi OP. Tuy nhiên, tôi có thể có thể thêm một phần mới về cách thức hoạt động của công cụ java.time mới
Nathan Feger


4
SimpleDateFormat sdf=new SimpleDateFormat("EEE");

EEE là viết tắt của ngày trong tuần, ví dụ Thứ Năm được hiển thị là Thu.



3

tl; dr

LocalDate.of( 2018 , Month.JANUARY , 23 )
         .format( DateTimeFormatter.ofPattern( uuuu-MM-EEE , Locale.US )  )

java.time

Cách tiếp cận hiện đại sử dụng các lớp java.time.

LocalDate ld = LocalDate.of( 2018 , Month.JANUARY , 23 ) ;

Lưu ý cách chúng tôi chỉ định một Localeví dụ như Locale.CANADA_FRENCHđể xác định ngôn ngữ của con người được sử dụng để dịch tên của ngày.

DateTimeFormatter f = DateTimeFormatter.ofPattern( uuuu-MM-EEE , Locale.US ) ;
String output = ld.format( f ) ;

ISO 8601

Nhân tiện, bạn có thể quan tâm đến sơ đồ đánh số tuần theo tiêu chuẩn ISO 8601 : yyyy-Www-d.

2018-W01-2

Tuần # 1 có thứ Năm đầu tiên của năm dương lịch. Tuần bắt đầu vào thứ Hai. Một năm có 52 hoặc 53 tuần. Những ngày cuối cùng / đầu tiên của một năm dương lịch có thể hạ cánh trong năm tiếp theo / tuần trước.

Chữ số duy nhất ở cuối là ngày trong tuần, 1-7 cho Thứ Hai-Chủ Nhật.

Thêm lớp thư viện ThreeTen-Extra vào dự án của bạn cho YearWeeklớp.


Giới thiệu về java.time

Các java.time khung được xây dựng vào Java 8 và sau đó. Những lớp học thay thế cái cũ phiền hà di sản lớp học ngày thời gian như java.util.Date, Calendar, & SimpleDateFormat.

Các Joda thời gian dự án, bây giờ trong chế độ bảo trì , khuyên chuyển đổi sang các java.time lớp.

Để tìm hiểu thêm, xem Hướng dẫn Oracle . Và tìm kiếm Stack Overflow cho nhiều ví dụ và giải thích. Đặc điểm kỹ thuật là JSR 310 .

Nơi để có được các lớp java.time?

  • Java SE 8 , Java SE 9 và mới hơn
    • Được xây dựng trong.
    • Một phần của API Java tiêu chuẩn với việc triển khai đi kèm.
    • Java 9 thêm một số tính năng nhỏ và sửa lỗi.
  • Java SE 6 Java SE 7
    • Phần lớn chức năng java.time được chuyển ngược lại sang Java 6 & 7 trong ThreeTen-Backport .
  • Android
    • Các phiên bản sau của triển khai gói Android của các lớp java.time.
    • Đối với Android trước đó, ThreeTenABP dự án thích nghi ThreeTen-backport (nêu trên). Xem Cách sử dụng ThreeTenABP .

Các ThreeTen-Extra dự án 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 các bổ sung có thể trong tương lai cho java.time. Bạn có thể tìm thấy một số các lớp học hữu ích ở đây chẳng hạn như Interval, YearWeek, YearQuarter, và nhiều hơn nữa .


2

Tôi biết câu hỏi là về việc lấy ngày trong tuần dưới dạng chuỗi (ví dụ: tên ngắn), nhưng đối với bất kỳ ai đang tìm kiếm ngày số trong tuần (như tôi), bạn có thể sử dụng chuỗi định dạng "u" mới, được hỗ trợ kể từ Java 7. Ví dụ:

new SimpleDateFormat("u").format(new Date());

trả về chỉ số ngày trong tuần hôm nay, cụ thể là: 1 = Thứ Hai, 2 = Thứ Ba, ..., 7 = Chủ Nhật.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.