/ / Trouver le nom du jour par année, mois et jour [duplicate] - java

Trouver le nom du jour par année, mois et jour [duplicate] - java

Si j'ai l'année int, le mois, le jour entier en Java, comment trouver le nom du jour? Y a-t-il déjà des fonctions pour cela?

Réponses:

38 pour la réponse № 1

Utilisation SimpleDateFormat avec un motif de EEEE pour obtenir le nom du jour de la semaine.

// Assuming that you already have this.
int year = 2011;
int month = 7;
int day = 22;

// First convert to Date. This is one of the many ways.
String dateString = String.format("%d-%d-%d", year, month, day);
Date date = new SimpleDateFormat("yyyy-M-d").parse(dateString);

// Then get the day of week from the Date based on specific locale.
String dayOfWeek = new SimpleDateFormat("EEEE", Locale.ENGLISH).format(date);

System.out.println(dayOfWeek); // Friday

Ici, tout est emballé dans une belle classe Java pour vous.

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;


public class DateUtility
{

public static void main(String args[]){
System.out.println(dayName("2015-03-05 00:00:00", "YYYY-MM-DD HH:MM:ss"));
}

public static String dayName(String inputDate, String format){
Date date = null;
try {
date = new SimpleDateFormat(format).parse(inputDate);
} catch (ParseException e) {
e.printStackTrace();
}
return new SimpleDateFormat("EEEE", Locale.ENGLISH).format(date);
}
}

12 pour la réponse № 2

Vous pouvez faire quelque chose comme ce pour obtenir les noms des jours de la semaine pour différents lieux.

Voici la partie importante:

DateFormatSymbols dfs = new DateFormatSymbols(usersLocale);
String weekdays[] = dfs.getWeekdays();

Cela peut être combiné avec ceci:

Calendar cal = Calendar.getInstance();
int day = cal.get(Calendar.DAY_OF_WEEK);

Pour obtenir ce que vous cherchez:

String nameOfDay = weekdays[day];

9 pour la réponse № 3

Le nom du jour de la semaine diffère selon les paramètres régionaux. Donc vous devez utiliser un DateFormat avec la bonne localisation. Par exemple:

SimpleDateFormat format = new SimpleDateFormat("EEEE");
System.out.println(format.format(date));

le Date L'objet peut être obtenu de plusieurs façons, y compris le modèle obsolète. Date(..) constructeur, le Calendar.set(..) méthodes ou joda-time DateTime. (pour ce dernier, vous pouvez utiliser le propre programme de joda-time DateTimeFormat)


8 pour la réponse № 4

Construisez un calendrier grégorien avec l'année, le mois et le jour, puis interrogez-le pour trouver le nom du jour. Quelque chose comme ça:

int year = 1977;
int month = 2;
int dayOfMonth = 15;
Calendar myCalendar = new GregorianCalendar(year, month, dayOfMonth);

int dayOfWeek = myCalendar.get(Calendar.DAY_OF_WEEK);

Notez que le jour de la semaine est retourné sous la forme d’un entier représentant le ordinal du jour dans le lieu de la semainereprésentation. IE, dans une locale où le jour de la semaine commence le lundi et se termine le dimanche, un 2 correspondrait à mardi, alors que si le jour de la locale commence le dimanche, ce même 2 représenterait lundi.

modifier</ strong>

Et comme il y a beaucoup de modifications de réponses en cours, permettez-moi d'ajouter ce qui suit:

DateFormatSymbols symbols = new DateFormatSymbols(Locale.getDefault());
String dayOfMonthStr = symbols.getWeekdays()[dayOfMonth];

Pour être honnête, j’aime mieux l’approche SimpleDateFormatter, car elle encapsule le même code que celui que j’ai montré ci-dessus. C’est idiot de l’oublier.


5 pour la réponse № 5

Vous pouvez utiliser le Calendrier Objet pour trouver ceci.

Une fois que vous avez créé l'instance de calendrier, vous obtenez le DAY_OF_WEEK (qui est un entier), puis vous pouvez trouver le jour à partir de là.

Vous pouvez utiliser une instruction switch ainsi:

import java.util.*;

public class DayOfWeek {

public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
int day = cal.get(Calendar.DAY_OF_WEEK);
System.out.print("Today is ");
switch (day) {
case 1:
System.out.print("Sunday");
break;
case 2:
System.out.print("Monday");
break;
case 3:
System.out.print("Tuesday");
break;
case 4:
System.out.print("Wednesday");
break;
case 5:
System.out.print("Thursday");
break;
case 6:
System.out.print("Friday");
break;
case 7:
System.out.print("Saturday");
}
System.out.print(".");
}
}

3 pour la réponse № 6
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, 22); //Set Day of the Month, 1..31
cal.set(Calendar.MONTH,6); //Set month, starts with JANUARY = 0
cal.set(Calendar.YEAR,2011); //Set year
System.out.println(cal.get(Calendar.DAY_OF_WEEK)); //Starts with Sunday, 6 = friday

1 pour la réponse № 7
new GregorianCalendar().setTime(new Date()).get(DAY_OF_WEEK)

Cela vous donne un numéro, Calendar.SUNDAY == 1, Calendar.MONDAY == 2, ...


1 pour la réponse № 8

Oui, mais c’est un processus assez long avec le JDK. JodaTime peut être un meilleur choix (je ne l’ai pas utilisé).

Tout d'abord, vous obtenez un Calendar objet, de sorte que vous puissiez construire une date à partir de jour / mois / année / fuseau horaire. Ne pas utiliser l'un des obsolètes Date constructeurs.

Puis obtenir un Date objet de ce calendrier, et le transmettre à SimpleDateFormat. Notez que les objets de format ne sont pas threadsafe.

  // by default, this Calendar object will have the current timezone
Calendar cal = GregorianCalendar.getInstance();
cal.set(2011, 6, 22);

// this formatter will have the current locale
SimpleDateFormat format = new SimpleDateFormat("EEEE");

System.out.println(format.format(cal.getTime()));

0 pour la réponse № 9

Ce type de travail date-heure est plus facile lorsque vous utilisez le Joda-Time bibliothèque. Un simple one-liner.

String dayOfWeek = new LocalDate( 2014, 1, 2 ).dayOfWeek().getAsText( java.util.Locale.ENGLISH );

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

Quand couru…

dayOfWeek: Thursday