Comment obtenir la date du premier jour et le dernier jour du trimestre en cours en java.util.Date

J'ai besoin d'obtenir le premier jour du trimestre en cours comme java.util.Objet Date et l' date du dernier jour du trimestre en cours comme java.util.L'objet Date.

Je suis en utilisant des méthodes suivantes pour obtenir ce premier mois de la date et de ce mois de la date du dernier.

private   Date getThisMonthFirstDate(){
    Calendar calendar = new GregorianCalendar();
    calendar.set(Calendar.HOUR_OF_DAY, 0);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    calendar.set(Calendar.DAY_OF_MONTH, 1);
    return calendar.getTime();
}

private   Date getThisMonthLastDate(){
    Calendar calandar = new GregorianCalendar();
    calendar.set(Calendar.HOUR_OF_DAY, 0);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    calendar.set(Calendar.DAY_OF_MONTH,1);
    calendar.add(Calendar.MONTH, 1);
    calendar.add(Calendar.DATE, -1);
   return calendar.getTime();
}

Est-il un moyen de modifier la fonction pour atteindre ce ou quelqu'un pourrait-il point d'une meilleure façon?

Supposons que T1 = Jan Fév Mar, T2 = Avr, Mai, Jun, etc.

Si vous utilisez zéro=mois de janvier, comme Date n', le début du trimestre est juste (year, 3*quarter, 1).
moisactuel - (moisactuel % 3) vous donne le premier mois du trimestre en cours. Cela dit, vous devez utiliser le nouveau Java 8 de l'API du temps ou, si ce n'est sur l'île de Java 8, joda-time. Calendrier et Date sont terribles.
Notez que Date représente un instantané dans le temps, pas un "jour" (un 24-ish période de l'heure dans votre fuseau horaire local). En tant que telle, la "fin" d'un trimestre est le mieux représenté que le début du trimestre suivant, exclusif. Ainsi, un quart est défini par le timestamp de début de ce trimestre (inclus) au début du prochain trimestre (exclusif).
Java 8 est-il assez facilement, c'est à dire ceci
Je suis un peu confus au sujet de votre getThisMonthLastDate() méthode depuis par l'exécution de calendrier.add(Calendar.DAY_OF_MONTH, -1); vous passez les derniers jours du mois. Peut-être diminuer par un deuxième ou à la milliseconde serait mieux.

OriginalL'auteur Asanka sanjaya | 2016-04-08