studio - fecha de nacimiento en java
Java: obtenga cualquier día en una semana del Calendario (5)
Este es un ejemplo perfecto de por qué jodatime es tan bueno, aquí está mi código similar
DateTime dt = new DateTime(); //current datetime, jodatime format
DateTime fridayLastWeek = dt.minusWeeks(1).dayOfWeek().setCopy("Friday");
Date convertedtorubbishdateformat = fridayLastWeek.toDate();
Solía perder tanto tiempo con la fecha / calendario estándar de Java. Luego conseguí jodatime, no lo lamentarás, al parecer se usará como parte de java estándar en el futuro. No me molesté en tirar la jarra durante años, desearía haber hecho, no te arrepentirás.
Usando Calendar
puedo obtener la semana, el año y todos los detalles del día actual. ¿Cómo puedo navegar a un día particular en esa semana?
Diga, calendar.get(Calendar.DAY_OF_WEEK);
devuelve 3, lo que significa un martes. Ahora, quiero ir a decir el viernes de esa semana o cualquier otro día de esa semana. ¿Cómo puedo hacer eso?
Gracias por tus respuestas. Creo que necesito aclarar el escenario. Básicamente, estoy tratando de desactivar las alertas por correo electrónico en mi sistema durante el período especificado. Obtengo valores como: disableStart = "VIERNES-19: 00" disableEnd = "DOMINGO-19: 00"
Ahora, necesito verificar si el correo electrónico debe enviarse en un momento determinado. por ejemplo, si hoy = jueves en cualquier momento, envíe un correo electrónico pero, si hoy = sábado, cualquier momento no puede enviarse según los valores anteriores.
Gracias a Kevin y Maurice por las respuestas. Realmente me dieron el punto de partida.
Terminé con este código de prueba, en caso de que ayude a alguien.
private static Date getTimeForAnyDayInWeek(int nDay, int nHour, int nMin)
{
Calendar c = Calendar.getInstance();
c.setFirstDayOfWeek(Calendar.MONDAY);
Date date = Calendar.getInstance().getTime();
c.setTime(date);
c.set(Calendar.DAY_OF_WEEK, nDay);
c.set(Calendar.HOUR_OF_DAY, nHour);
c.set(Calendar.MINUTE, nMin);
return c.getTime();
}
public static void main(String[] args)
{
Date start = getTimeForAnyDayInWeek(6, 19, 00);
Date end = getTimeForAnyDayInWeek(8, 19, 00);
Date c = new Date();
if (start.before(c) && c.before(end))
System.out.println("BLOCK");
else
System.out.println("SEND");
}
Gracias, Anubhav
Si entiendo correctamente, puede usar el método Calendar.set (Field, value).
SimpleDateFormat f = new SimpleDateFormat("dd-MM-yyyy");
Calendar c = Calendar.getInstance();
System.out.println(c.get(Calendar.DAY_OF_WEEK));
System.out.println(f.format(c.getTime()));
c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
System.out.println(c.get(Calendar.DAY_OF_WEEK));
System.out.println(f.format(c.getTime()));
Produce la salida
6
08-10-2010
3
05-10-2010
cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
Calendar c = Calendar.getInstance();
Date date = new Date();
c.setTime(date);
System.out.println("Today: " + c.getTime());
c.setTime(date);
c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
System.out.println("MONDAY: " + c.getTime());
c.setTime(date);
c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
System.out.println("TUESDAY: " + c.getTime());
c.setTime(date);
c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
System.out.println("WEDNESDAY: " + c.getTime());
c.setTime(date);
c.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);
System.out.println("THURSDAY: " + c.getTime());
c.setTime(date);
c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
System.out.println("FRIDAY: " + c.getTime());
c.setTime(date);
c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
System.out.println("SATURDAY: " + c.getTime());
c.setTime(date);
c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
System.out.println("SUNDAY: " + c.getTime());
Da:
Today: Fri Oct 08 15:45:14 CEST 2010
MONDAY: Mon Oct 04 15:45:14 CEST 2010
TUESDAY: Tue Oct 05 15:45:14 CEST 2010
WEDNESDAY: Wed Oct 06 15:45:14 CEST 2010
THURSDAY: Thu Oct 07 15:45:14 CEST 2010
FRIDAY: Fri Oct 08 15:45:14 CEST 2010
SATURDAY: Sat Oct 09 15:45:14 CEST 2010
SUNDAY: Sun Oct 10 15:45:14 CEST 2010
Lo que significa que, al menos en mi sistema, las semanas comienzan el lunes.