¿Cómo obtener la fecha de inicio y finalización de un año?

Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2014);
cal.set(Calendar.DAY_OF_YEAR, 1);    
Date start = cal.getTime();

//set date to last day of 2014
cal.set(Calendar.YEAR, 2014);
cal.set(Calendar.MONTH, 11); // 11 = december
cal.set(Calendar.DAY_OF_MONTH, 31); // new years eve

Date end = cal.getTime();

//Iterate through the two dates 
GregorianCalendar gcal = new GregorianCalendar();
gcal.setTime(start);
while (gcal.getTime().before(end)) {
    gcal.add(Calendar.DAY_OF_YEAR, 1);
    //Do Something ...
}
Respuesta 1

java.time

Usando la java.timebiblioteca integrada en Java 8 y posterior. Específicamente el LocalDatey las TemporalAdjustersclases.

import java.time.LocalDate
import static java.time.temporal.TemporalAdjusters.firstDayOfYear
import static java.time.temporal.TemporalAdjusters.lastDayOfYear

LocalDate now = LocalDate.now(); // 2015-11-23
LocalDate firstDay = now.with(firstDayOfYear()); // 2015-01-01
LocalDate lastDay = now.with(lastDayOfYear()); // 2015-12-31

Si necesita agregar información de tiempo, puede usar cualquier disponible LocalDatepara la LocalDateTimeconversión como

lastDay.atStartOfDay(); // 2015-12-31T00:00
Respuesta: 2
 Calendar cal = new GregorianCalendar();
     cal.set(Calendar.DAY_OF_YEAR, 1);
     System.out.println(cal.getTime().toString());
     cal.set(Calendar.DAY_OF_YEAR, 366); // for leap years
     System.out.println(cal.getTime().toString());
Respuesta: 3
    // suppose that I have the following variable as input
    int year=2011;
    Calendar calendarStart=Calendar.getInstance();
    calendarStart.set(Calendar.YEAR,year);
    calendarStart.set(Calendar.MONTH,0);
    calendarStart.set(Calendar.DAY_OF_MONTH,1);
    // returning the first date
    Date startDate=calendarStart.getTime();

    Calendar calendarEnd=Calendar.getInstance();
    calendarEnd.set(Calendar.YEAR,year);
    calendarEnd.set(Calendar.MONTH,11);
    calendarEnd.set(Calendar.DAY_OF_MONTH,31);

    // returning the last date
    Date endDate=calendarEnd.getTime();

Para iterar, debe usar el objeto de calendario e incrementar la variable day_of_month

Espero que pueda ayudar

Respuesta: 4

Si está buscando una expresión de una línea, generalmente uso esto:

new SimpleDateFormat("yyyy-MM-dd").parse(String.valueOf(new java.util.Date().getYear())+"-01-01")
Respuesta: 5

Supongo que tiene una instancia de clase Date y necesita encontrar la primera fecha y la última fecha del año actual en términos de instancia de clase Date. Puede usar la clase Calendario para esto. Construya la instancia de Calendar utilizando la instancia de clase de fecha proporcionada. Establezca el campo MONTH y DAY_OF_MONTH en 0 y 1 respectivamente, luego use el método getTime () que devolverá la instancia de la clase Date que representa el primer día del año. Puede usar la misma técnica para encontrar fin de año.

    Date date = new Date();
    System.out.println("date: "+date);
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);

    System.out.println("cal:"+cal.getTime());

    cal.set(Calendar.MONTH, 0);
    cal.set(Calendar.DAY_OF_MONTH, 1);

    System.out.println("cal new: "+cal.getTime());
Respuesta: 6

Una mejora sobre la respuesta de Srini.
Determine la última fecha del año usando Calendar.getActualMaximum.

Calendar cal = Calendar.getInstance();

calDate.set(Calendar.DAY_OF_YEAR, 1);
Date yearStartDate = calDate.getTime();

calDate.set(Calendar.DAY_OF_YEAR, calDate.getActualMaximum(Calendar.DAY_OF_YEAR));
Date yearEndDate = calDate.getTime();
Respuesta: 7

Puede usar Jodatime como se muestra en este hilo Java Joda Time - Implementar un iterador de rango de fechas

Además, puede usar el calendario gregoriano y moverse un día a la vez, como se muestra aquí. Necesito un ciclo que itera a través del intervalo de fechas

PD. Consejo: búscalo primero.

Respuesta: 8

Puede usar el proyecto apache commons-lang que tiene una clase DateUtils .

Proporcionan un iterador que puede asignar al objeto Fecha.

Pero le recomiendo usar la clase Calendario como lo sugieren las otras respuestas.

Respuesta: 9

Actualización: la biblioteca Joda-Time ahora está en modo de mantenimiento con su equipo que aconseja la migración a las clases java.time. Consulte la respuesta correcta de java.time de Przemek.

Zona horaria

Las otras respuestas ignoran el tema crucial de la zona horaria.

Joda-Time

Evite realizar trabajos de fecha y hora con la clase java.util.Date notoriamente problemática. En su lugar, use Joda-Time o java.time. Convierta a objetos juDate según sea necesario para la interoperabilidad.

DateTimeZone zone = DateTimeZone.forID( "America/Montreal" ) ;
int year = 2015 ;
DateTime firstOfYear = new DateTime( year , DateTimeConstants.JANUARY , 1 , 0 , 0 , zone ) ;
DateTime firstOfNextYear = firstOfYear.plusYears( 1 ) ;
DateTime firstMomentOfLastDayOfYear = firstOfNextYear.minusDays( 1 ) ;

Convertir a java.util.Date

Convierta a juDate según sea necesario.

java.util.Date d = firstOfYear.toDate() ;
Respuesta: 10

Primer y último día del año

import java.util.Calendar
import java.text.SimpleDateFormat

val parsedDateInt = new SimpleDateFormat("yyyy-MM-dd")

val cal2 = Calendar.getInstance()
cal2.add(Calendar.MONTH, -(cal2.get(Calendar.MONTH)))
cal2.set(Calendar.DATE, 1)
val firstDayOfYear = parsedDateInt.format(cal2.getTime)


cal2.add(Calendar.MONTH, (11-(cal2.get(Calendar.MONTH))))
cal2.set(Calendar.DATE, cal2.getActualMaximum(Calendar.DAY_OF_MONTH))
val lastDayOfYear = parsedDateInt.format(cal2.getTime)
Respuesta: 11
val instance = Calendar.getInstance()
                instance.add(Calendar.YEAR,-1)

 val prevYear = SimpleDateFormat("yyyy").format(DateTime(instance.timeInMillis).toDate())

val firstDayPreviousYear = DateTime(prevYear.toInt(), 1, 1, 0, 0, 0, 0)

val lastDayPreviousYear = DateTime(prevYear.toInt(), 12, 31, 0, 0, 0, 0)
Respuesta: 12
GregorianCalendar gcal = new GregorianCalendar();
gcal.setTime(start);
while (gcal.getTime().before(end)) {
    gcal.add(Calendar.DAY_OF_YEAR, 1);
    //Do Something ...
}

La creación de GregorianCalendar aquí no tiene sentido. De hecho, revisar el código fuente Calendar.java muestra que Calendar.getInstance () ya da una instancia de GregorianCalendar.

Saludos, Nicolas

Respuesta: 13

He creado un nuevo proyecto en Eclipse y quiero incluir el archivo jar ANTLR. ¿Dónde suele colocar sus archivos jar antes de hacer referencia a ellos en su proyecto? ¿Crea un "Directorio de origen" ...

Existe ListChangeListener.Change.wasUpdated () que se utiliza para detectar cambios dentro de los elementos de ObservableLists creados a través de ObservableList.observableArrayList (Callback <E, Observable []> ...

Tengo un problema que probablemente esté relacionado con la relación Spring / class loader. Me disculparé por la verbosidad de la pregunta ahora. Tengo varias aplicaciones de Java heredadas que ...

Estoy tratando de desarrollar una aplicación Spring MVC con páginas JSP y me he encontrado con un problema. Es más un problema de creatividad que un problema de código, pero aquí va: la aplicación básicamente recibe ...