Si tengo int year, int month, int day en Java, ¿cómo puedo encontrar el nombre del día? ¿Ya hay algunas funciones para esto?Buscar el nombre del día por año, mes y día
Respuesta
Puede usar el objeto Calendar para encontrarlo.
Una vez creada la instancia calendario que presentamos lo mejor DAY_OF_WEEK (que es un entero), entonces usted puede encontrar el día de allí)
Se puede utilizar una sentencia switch like so:
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(".");
}
}
construir una GregorianCalendar con el año, mes y día, luego consulta para encontrar el nombre del día. Algo como esto:
int year = 1977;
int month = 2;
int dayOfMonth = 15;
Calendar myCalendar = new GregorianCalendar(year, month, dayOfMonth);
int dayOfWeek = myCalendar.get(Calendar.DAY_OF_WEEK);
Tenga en cuenta que el día de la semana se devuelve como un entero que representa el ordinal del día en la representación día de la semana de la localización. Es decir, en una localidad donde el día laborable comienza el lunes y termina el domingo, un 2 representaría el martes, mientras que si el día local comienza el domingo, ese mismo 2 representaría el lunes.
Edición
Y puesto que hay un montón de edición de respuesta pasando, me permite manejar el siguiente:
DateFormatSymbols symbols = new DateFormatSymbols(Locale.getDefault());
String dayOfMonthStr = symbols.getWeekdays()[dayOfMonth];
Pensado para ser honesto, me gusta el enfoque SimpleDateFormatter mejor, porque encapsula el mismo código que he mostrado anteriormente. Tonto de olvidar todo.
precaución: ¡el mes se basa en cero, será el 15 de marzo! (no febrero) –
Lo sé, estaba apuntando a los idus de marzo en mi ejemplo; P – Perception
tal vez, pero estoy seguro de que todavía hay programadores que no lo saben. –
El nombre del día de la semana difiere según el lugar. Entonces debe usar un DateFormat
con la configuración regional adecuada. Por ejemplo:
SimpleDateFormat format = new SimpleDateFormat("EEEE");
System.out.println(format.format(date));
El objeto Date
se puede obtener de varias maneras, incluyendo el desuso Date(..)
constructor, los Calendar.set(..)
métodos o joda tiempo DateTime
. (Para este último se puede utilizar de joda en tiempo propio DateTimeFormat
)
new GregorianCalendar().setTime(new Date()).get(DAY_OF_WEEK)
Eso le da un número, Calendar.SUNDAY == 1
, Calendar.MONDAY == 2
, ...
Sí, pero es un poco largo proceso con el JDK. JodaTime puede ser una mejor opción (no lo he usado).
En primer lugar, obtiene un objeto Calendar
, por lo que puede construir una fecha del día/mes/año/zona horaria. No use uno de los constructores obsoletos Date
.
Luego obtenga un objeto Date
de ese calendario, y páselo a SimpleDateFormat
. Tenga en cuenta que los objetos de formato no son enhebrables.
// 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()));
Nota: en Calendar, los meses son basados en cero. 7 es igual a agosto, no julio. – BalusC
@BalusC - cierto, editado. Raramente utilizo ese método en el código principal, pero me quemo todo el tiempo en pruebas unitarias. Debería haber prestado más atención a lo que salió cuando di el ejemplo. – parsifal
Usted puede hacer algo como this para obtener los nombres de los días de la semana para diferentes lugares.
Aquí está la parte importante:
DateFormatSymbols dfs = new DateFormatSymbols(usersLocale);
String weekdays[] = dfs.getWeekdays();
que se pueden combinar con esto:
Calendar cal = Calendar.getInstance();
int day = cal.get(Calendar.DAY_OF_WEEK);
para conseguir lo que está buscando:
String nameOfDay = weekdays[day];
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
Uso SimpleDateFormat
con un patrón de EEEE
para obtener el nombre del día de la semana.
// 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
Aquí está todo incluido en una buena clase de Java para usted.
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);
}
}
+2 si pudiera ... –
¡Debería ser la respuesta aceptada! No olvides 'importar java.text.ParseException; import java.text.SimpleDateFormat; import java.util. *; ' –
Este tipo de trabajo a tiempo la fecha es más fácil cuando se utiliza la biblioteca Joda-Time. Un simple trazador de líneas.
String dayOfWeek = new LocalDate(2014, 1, 2).dayOfWeek().getAsText(java.util.Locale.ENGLISH);
System.out.println("dayOfWeek: " + dayOfWeek);
Cuando se ejecuta ...
dayOfWeek: Thursday
- 1. Django: Grupo por fecha (día, mes, año)
- 2. MySQL Query GROUP POR día/mes/año
- 3. Almacenamiento día y mes (sin año)
- 4. ¿Es posible que un selector de fechas presente el nombre año/mes/día + día?
- 5. Ordenando por fecha descendente - mes, día y año
- 6. Generar NSDate a partir del día, mes y año
- 7. Python Pregunta: año y día del año hasta la fecha?
- 8. Cómo ser seleccionado día/mes y año de jquery datepicker
- 9. fecha Dividir en diferentes columnas de año, mes y día
- 10. Marca de tiempo Python del día, mes, año
- 11. grupo por año, mes, día en un sqlalchemy
- 12. Hoy es el día del año enésimo
- 13. DateTime Format Día del año
- 14. Cómo determinar día, mes y año como int en iOS
- 15. Crear una fecha solo con mes y día, sin año
- 16. Primer y último día del mes actual
- 17. Crear fecha de día, mes, año campos en MySQL
- 18. NSDate para el primer día del mes
- 19. Jquery datepicker - solo día y mes
- 20. Obtener el último día del mes?
- 21. Obteniendo el primer día del mes de un mes/año específico
- 22. Cómo obtener el último día del mes
- 23. ¿Cómo obtener el día del mes?
- 24. jquery ui datepicker día/mes solamente, no año de selección
- 25. DateTime.Now.ToShortDateString(); reemplazan mes y el día
- 26. analizar una cadena de "año-mes-día" formato en C#
- 27. Obtener detalles de la fecha (día, mes, año) en GWT
- 28. día foreach en el mes
- 29. cálculo del último día del mes
- 30. cómo conseguir el primer día y el último día de la semana y el año número
Si usted ha encontrado su respuesta que debe aceptar la respuesta que más te ayudó. – RMT