web-dev-qa-db-fra.com

Android: comment obtenir le jour actuel de la semaine (lundi, etc ...) dans la langue de l'utilisateur?

Je souhaite connaître le jour actuel de la semaine (lundi, mardi ...) dans la langue locale de l'utilisateur. Par exemple, "Lundi" "Mardi" etc ... si l'utilisateur est français.

J'ai lu ce message, mais il ne renvoie qu'un entier, pas une chaîne avec le jour dans la langue de l'utilisateur: Quel est le moyen le plus simple d'obtenir le jour de la semaine sous Android?

Plus généralement, comment obtenez-vous tous les jours de la semaine et tous les mois de l'année écrits dans la langue de l'utilisateur?

Je pense que cela est possible, comme par exemple l'agenda de Google donne les jours et les mois écrits dans la langue locale de l'utilisateur.

Merci !!

67
Regis_AG

Utilisez SimpleDateFormat pour formater les dates et les heures en une chaîne lisible par l'homme, en respectant les paramètres régionaux de l'utilisateur.

Petit exemple pour obtenir le jour de la semaine en cours (par exemple, "lundi") :

SimpleDateFormat sdf = new SimpleDateFormat("EEEE");
Date d = new Date();
String dayOfTheWeek = sdf.format(d);
142
user658042

Essaye ça:

int dayOfWeek = date.get(Calendar.DAY_OF_WEEK);  
String weekday = new DateFormatSymbols().getShortWeekdays()[dayOfWeek];
23
almisoft

Pour raccourcir les choses, vous pouvez utiliser ceci:

Android.text.format.DateFormat.format("EEEE", date);

qui retournera le jour de la semaine sous forme de chaîne.

15
gswierczynski

Je sais déjà répondu mais qui cherche 'Fri' comme ceci

pour vendredi -

SimpleDateFormat sdf = new SimpleDateFormat("EEE");
Date d = new Date();
String dayOfTheWeek = sdf.format(d);

et qui veut la chaîne de date complète qu'ils peuvent utiliser 4E pour vendredi

Pour vendredi-

SimpleDateFormat sdf = new SimpleDateFormat("EEEE");
Date d = new Date();
String dayOfTheWeek = sdf.format(d);

Prendre plaisir...

14
CrazyMind

C'est ce que j'avais l'habitude de recevoir les noms de jour (0-6 veux dire monday - sunday):

public static String getFullDayName(int day) {
    Calendar c = Calendar.getInstance();
    // date doesn't matter - it has to be a Monday
    // I new that first August 2011 is one ;-)
    c.set(2011, 7, 1, 0, 0, 0);
    c.add(Calendar.DAY_OF_MONTH, day);
    return String.format("%tA", c);
}

public static String getShortDayName(int day) {
    Calendar c = Calendar.getInstance();
    c.set(2011, 7, 1, 0, 0, 0);
    c.add(Calendar.DAY_OF_MONTH, day);
    return String.format("%ta", c);
}
11
Knickedi

tl; dr

String output = 
    LocalDate.now( ZoneId.of( "America/Montreal" ) )
             .getDayOfWeek()
             .getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;

Java.time

Les classes Java.time intégrées à Java 8 et versions ultérieures et rétroporté à Java 6 et 7 et à Android inclure le pratique DayOfWeek enum.

Les jours sont numérotés selon la définition standard ISO 8601, 1-7 du lundi au dimanche.

DayOfWeek dow = DayOfWeek.of( 1 );

Cette énumération inclut la méthode getDisplayName pour générer une chaîne du nom traduit du jour traduit.

L'objet Locale spécifie un langage humain à utiliser dans la traduction, ainsi que des normes culturelles permettant de résoudre des problèmes tels que la capitalisation et la ponctuation.

String output = DayOfWeek.MONDAY.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;

Pour obtenir la date du jour, utilisez la classe LocalDate. Notez qu'un fuseau horaire est crucial car, à tout moment, la date varie dans le monde entier.

ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );
DayOfWeek dow = today.getDayOfWeek();
String output = dow.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;

N'oubliez pas que les paramètres régionaux n'ont rien à voir avec le fuseau horaire. Deux problèmes orthogonaux distincts sont alors définis. Vous voudrez peut-être une présentation en français d’une date-heure zonée en Inde (Asia/Kolkata).

Joda-Time

MISE À JOUR: Le projet Joda-Time , actuellement en mode maintenance , conseille de migrer vers les classes Java.time .

La bibliothèque Joda-Time fournit la localisation Locale - des valeurs date-heure, pilotées par elle.

DateTimeZone zone = DateTimeZone.forID( "America/Montreal" );
DateTime now = DateTime.now( zone );

Locale locale = Locale.CANADA_FRENCH;
DateTimeFormatter formatterUnJourQuébécois = DateTimeFormat.forPattern( "EEEE" ).withLocale( locale );

String output = formatterUnJourQuébécois.print( now );

System.out.println("output: " + output );

sortie: samedi


À propos de Java.time

Le cadre Java.time est intégré à Java 8 et versions ultérieures. Ces classes supplantent les anciennes et ennuyeuses classes legacy date-heure telles que - Java.util.Date , Calendar , & SimpleDateFormat .

Le projet Joda-Time , actuellement en mode maintenance , conseille de migrer vers les classes Java.time .

Pour en savoir plus, voir le Tutoriel Oracle . Et recherchez Stack Overflow pour de nombreux exemples et explications. La spécification est JSR 31 .

Où obtenir les classes Java.time?

5
Basil Bourque

Essaye ça...

//global declaration
private TextView timeUpdate;
Calendar calendar;

.......

timeUpdate = (TextView) findViewById(R.id.timeUpdate); //initialize in onCreate()

.......

//in onStart()
calendar = Calendar.getInstance();
//date format is:  "Date-Month-Year Hour:Minutes am/pm"
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy HH:mm a"); //Date and time
String currentDate = sdf.format(calendar.getTime());

//Day of Name in full form like,"Saturday", or if you need the first three characters you have to put "EEE" in the date format and your result will be "Sat".
SimpleDateFormat sdf_ = new SimpleDateFormat("EEEE"); 
Date date = new Date();
String dayName = sdf_.format(date);
timeUpdate.setText("" + dayName + " " + currentDate + "");

Le résultat est... enter image description here

codage heureux .....

5

Désolé pour la réponse tardive.Mais cela fonctionnerait correctement.

daytext=(textview)findviewById(R.id.day);

Calender c=Calender.getInstance();
SimpleDateFormat sd=new SimpleDateFormat("EEEE");
String dayofweek=sd.format(c.getTime());


daytext.setText(dayofweek);
3
Ajinkya
//selected date from calender
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy"); //Date and time
String currentDate = sdf.format(myCalendar.getTime());

//selcted_day name
SimpleDateFormat sdf_ = new SimpleDateFormat("EEEE");
String dayofweek=sdf_.format(myCalendar.getTime());
current_date.setText(currentDate);
lbl_current_date.setText(dayofweek);

Log.e("dayname", dayofweek);
0
savithri