tl; dr
Menggunakan java.time ...
LocalDate.parse( // Generate `LocalDate` object from String input.
"23/2/2010" ,
DateTimeFormatter.ofPattern( "d/M/uuuu" )
)
.getDayOfWeek() // Get `DayOfWeek` enum object.
.getDisplayName( // Localize. Generate a String to represent this day-of-week.
TextStyle.SHORT_STANDALONE , // How long or abbreviated. Some languages have an alternate spelling for "standalone" use (not so in English).
Locale.US // Or Locale.CANADA_FRENCH and such. Specify a `Locale` to determine (1) human language for translation, and (2) cultural norms for abbreviation, punctuation, etc.
)
Sel
Lihat kode ini berjalan langsung di IdeOne.com (tetapi hanya Locale.US
berfungsi di sana).
waktu java
Lihat contoh kode saya di atas, dan lihat Jawaban yang benar untuk java.time oleh Przemek .
Nomor urut
jika hanya hari yang diinginkan, bagaimana itu bisa diambil?
Untuk bilangan urut, pertimbangkan untuk melewatkan DayOfWeek
objek enum seperti DayOfWeek.TUESDAY
. Perlu diingat bahwa a DayOfWeek
adalah objek yang cerdas, bukan hanya string atau angka integer belaka. Menggunakan objek enum tersebut membuat kode Anda lebih banyak mendokumentasikan diri sendiri, memastikan nilai yang valid, dan memberikan keamanan jenis .
Tetapi jika Anda bersikeras, mintalah DayOfWeek
nomor . Anda mendapatkan 1-7 untuk Senin-Minggu per standar ISO 8601 .
int ordinal = myLocalDate.getDayOfWeek().getValue() ;
Joda-Time
UPDATE: Proyek Joda-Time sekarang dalam mode pemeliharaan. Tim menyarankan migrasi ke kelas java.time. Kerangka java.time dibangun ke Java 8 (serta porting kembali ke Java 6 & 7 dan selanjutnya diadaptasi ke Android ).
Berikut adalah contoh kode menggunakan perpustakaan Joda-Time versi 2.4, sebagaimana disebutkan dalam jawaban yang diterima oleh Bozho . Joda-Time jauh lebih unggul dari kelas java.util.Date/.Calendar yang dibundel dengan Java.
LocalDate
Joda-Time menawarkan LocalDate
kelas untuk mewakili tanggal saja tanpa zona waktu atau waktu. Apa yang ditanyakan oleh Pertanyaan ini. Kelas java.util.Date/.Calendar tua yang dibundel dengan Java tidak memiliki konsep ini.
Parse
Parsing string menjadi nilai tanggal.
String input = "23/2/2010";
DateTimeFormatter formatter = DateTimeFormat.forPattern( "d/M/yyyy" );
LocalDate localDate = formatter.parseLocalDate( input );
Ekstrak
Ekstrak dari nilai tanggal hari nomor dan nama minggu.
int dayOfWeek = localDate.getDayOfWeek(); // Follows ISO 8601 standard, where Monday = 1, Sunday = 7.
Locale locale = Locale.US; // Locale specifies the human language to use in determining day-of-week name (Tuesday in English versus Mardi in French).
DateTimeFormatter formatterOutput = DateTimeFormat.forPattern( "E" ).withLocale( locale );
String output = formatterOutput.print( localDate ); // 'E' is code for abbreviation of day-of-week name. See Joda-Time doc.
String outputQuébécois = formatterOutput.withLocale( Locale.CANADA_FRENCH ).print( localDate );
Membuang
Dump ke konsol.
System.out.println( "input: " + input );
System.out.println( "localDate: " + localDate ); // Defaults to ISO 8601 formatted strings.
System.out.println( "dayOfWeek: " + dayOfWeek );
System.out.println( "output: " + output );
System.out.println( "outputQuébécois: " + outputQuébécois );
Lari
Saat dijalankan.
input: 23/2/2010
localDate: 2010-02-23
dayOfWeek: 2
output: Tue
outputQuébécois: mar.
Tentang java.time
The java.time kerangka dibangun ke Jawa 8 dan kemudian. Kelas-kelas ini menggantikan tua merepotkan warisan kelas tanggal-waktu seperti java.util.Date
, Calendar
, & SimpleDateFormat
.
Proyek Joda-Time , sekarang dalam mode pemeliharaan , menyarankan migrasi ke kelas java.time .
Untuk mempelajari lebih lanjut, lihat Tutorial Oracle . Dan cari Stack Overflow untuk banyak contoh dan penjelasan. Spesifikasi adalah JSR 310 .
Di mana mendapatkan kelas java.time?
Proyek ThreeTen-Extra memperpanjang java.time dengan kelas tambahan. Proyek ini adalah ajang pembuktian untuk kemungkinan penambahan masa depan ke java.time. Anda mungkin menemukan beberapa kelas berguna di sini seperti Interval
, YearWeek
, YearQuarter
, dan lebih .