una sumar sistema restar para obtener mes hora funcion fechas fecha dias con como actual java calendar dayofweek

sumar - restar un mes a una fecha java



Obtener el inicio y la fecha de finalizaciĆ³n de una semana usando la clase de calendario de Java (5)

Algunos codifican cómo hacerlo con el objeto Calendar . También debería mencionar la biblioteca de tiempo joda, ya que puede ayudarte con muchos problemas de Date/Calendar .

Código

public static void main(String[] args) { // set the date Calendar cal = Calendar.getInstance(); cal.set(2011, 10 - 1, 12); // "calculate" the start date of the week Calendar first = (Calendar) cal.clone(); first.add(Calendar.DAY_OF_WEEK, first.getFirstDayOfWeek() - first.get(Calendar.DAY_OF_WEEK)); // and add six days to the end date Calendar last = (Calendar) first.clone(); last.add(Calendar.DAY_OF_YEAR, 6); // print the result SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); System.out.println(df.format(first.getTime()) + " -> " + df.format(last.getTime())); }

Quiero tener la última y la primera semana de una semana para una fecha determinada. por ejemplo, si la fecha es el 12 de octubre de 2011, entonces necesito las fechas 10 de octubre de 2011 (como fecha de inicio de la semana) y 16 de octubre de 2011 (como fecha de finalización de la semana) ¿Alguien sabe cómo obtener estas 2 fechas usando el calendario? clase (java.util.Calendar) muchas gracias!


Si quieres todas las fechas, entonces

first.add(Calendar.DAY_OF_WEEK,first.getFirstDayOfWeek() - first.get(Calendar.DAY_OF_WEEK)); for (int i = 1; i <= 7; i++) { System.out.println( i+" Day Of that Week is",""+first.getTime()); first.add(Calendar.DAY_OF_WEEK,1); }


Esta solución funciona para cualquier localidad (el primer día de la semana podría ser el domingo o el lunes).

Date date = new Date(); Calendar c = Calendar.getInstance(); c.setTime(date); int dayOfWeek = c.get(Calendar.DAY_OF_WEEK) - c.getFirstDayOfWeek(); c.add(Calendar.DAY_OF_MONTH, -dayOfWeek); Date weekStart = c.getTime(); // we do not need the same day a week after, that''s why use 6, not 7 c.add(Calendar.DAY_OF_MONTH, 6); Date weekEnd = c.getTime();

Por ejemplo, hoy es el 29 de enero de 2014. Para la localidad con el domingo como primer día de la semana, obtendrá:

start: 2014-01-26 end: 2014-02-01

Para la configuración regional con el lunes como primer día, las fechas serán:

start: 2014-01-27 end: 2014-02-02


Aquí está el código de ejemplo

public static void main(String[] args) { Calendar cal = Calendar.getInstance(); cal.set(2016, 2, 15); { Calendar startCal = Calendar.getInstance(); startCal.setTimeInMillis(cal.getTimeInMillis()); int dayOfWeek = startCal.get(Calendar.DAY_OF_WEEK); startCal.set(Calendar.DAY_OF_MONTH, (startCal.get(Calendar.DAY_OF_MONTH) - dayOfWeek) + 1); System.out.println("end date : " + startCal.getTime()); } { Calendar endCal = Calendar.getInstance(); endCal.setTimeInMillis(cal.getTimeInMillis()); int dayOfWeek = endCal.get(Calendar.DAY_OF_WEEK); endCal.set(Calendar.DAY_OF_MONTH, endCal.get(Calendar.DAY_OF_MONTH) + (7 - dayOfWeek)); System.out.println("start date : " + endCal.getTime()); } }

que se imprimirá

start date : Sun Mar 13 20:30:30 IST 2016 end date : Sat Mar 19 20:30:30 IST 2016


He encontrado que la fórmula en la respuesta aceptada solo funcionará en algunos casos. Por ejemplo, su semana comienza el sábado y hoy es domingo. Para llegar al primer día de la semana caminamos de regreso 1 día, pero la fórmula cal.get(Calendar.DAY_OF_WEEK) - cal.getFirstDayOfWeek() dará la respuesta -6. La solución es usar un módulo para que la fórmula se adapte, por así decirlo.

int daysToMoveToStartOfWeek = ( 7 + cal.get(Calendar.DAY_OF_WEEK) - cal.getFirstDayOfWeek() )%7; cal.add(Calendar.DAY_OF_WEEK, -1 * daysToMoveToStartOfWeek);