tl; dr
Utilisation de 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.
)
Mar
Voir ce code s'exécuter en direct sur IdeOne.com (mais ne Locale.US
fonctionne que là-bas).
java.time
Voir mon exemple de code ci-dessus et voir la bonne réponse pour java.time par Przemek .
Nombre ordinal
si seulement l'ordinal du jour est souhaité, comment le récupérer?
Pour le nombre ordinal, envisagez DayOfWeek
plutôt de passer autour de l' objet enum tel que DayOfWeek.TUESDAY
. Gardez à l'esprit que a DayOfWeek
est un objet intelligent, pas seulement une chaîne ou un simple nombre entier. L'utilisation de ces objets enum rend votre code plus auto-documenté, garantit des valeurs valides et fournit une sécurité de type .
Mais si vous insistez, demandez DayOfWeek
un numéro . Vous obtenez 1-7 du lundi au dimanche selon la norme ISO 8601 .
int ordinal = myLocalDate.getDayOfWeek().getValue() ;
Joda-Time
MISE À JOUR: Le projet Joda-Time est maintenant en mode maintenance. L'équipe conseille de migrer vers les classes java.time. Le framework java.time est intégré à Java 8 (ainsi que rétroporté vers Java 6 et 7 et adapté à Android ).
Voici un exemple de code utilisant la bibliothèque Joda-Time version 2.4, comme mentionné dans la réponse acceptée de Bozho . Joda-Time est de loin supérieur aux classes java.util.Date/.Calendar fournies avec Java.
LocalDate
Joda-Time propose la LocalDate
classe pour représenter une date uniquement sans heure ni fuseau horaire. Exactement ce que cette question appelle. Les anciennes classes java.util.Date/.Calendar fournies avec Java n'ont pas ce concept.
Analyser
Analysez la chaîne en une valeur de date.
String input = "23/2/2010";
DateTimeFormatter formatter = DateTimeFormat.forPattern( "d/M/yyyy" );
LocalDate localDate = formatter.parseLocalDate( input );
Extrait
Extrait de la valeur de date le numéro et le nom du jour de la semaine.
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 );
Déverser
Dump dans la console.
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 );
Courir
Lorsqu'il est exécuté.
input: 23/2/2010
localDate: 2010-02-23
dayOfWeek: 2
output: Tue
outputQuébécois: mar.
À propos de java.time
Le framework java.time est intégré à Java 8 et versions ultérieures. Ces classes supplantent les anciens gênants hérités des classes date-heure tels que java.util.Date
, Calendar
, et SimpleDateFormat
.
Le projet Joda-Time , désormais en mode maintenance , conseille la migration vers les classes java.time .
Pour en savoir plus, consultez le didacticiel Oracle . Et recherchez Stack Overflow pour de nombreux exemples et explications. La spécification est JSR 310 .
Où obtenir les classes java.time?
- Java SE 8 , Java SE 9 et versions ultérieures
- Intégré.
- Partie de l'API Java standard avec une implémentation groupée.
- Java 9 ajoute quelques fonctionnalités et corrections mineures.
- Java SE 6 et Java SE 7
- Une grande partie de la fonctionnalité java.time est rétroportée vers Java 6 et 7 dans ThreeTen-Backport .
- Android
Le projet ThreeTen-Extra étend java.time avec des classes supplémentaires. Ce projet est un terrain d'essai pour d'éventuels futurs ajouts à java.time. Vous trouverez peut - être des classes utiles ici, comme Interval
, YearWeek
, YearQuarter
et plus .