Java tutorial
/* * Copyright (c) Numerical Method Inc. * http://www.numericalmethod.com/ * * THIS SOFTWARE IS LICENSED, NOT SOLD. * * YOU MAY USE THIS SOFTWARE ONLY AS DESCRIBED IN THE LICENSE. * IF YOU ARE NOT AWARE OF AND/OR DO NOT AGREE TO THE TERMS OF THE LICENSE, * DO NOT USE THIS SOFTWARE. * * THE SOFTWARE IS PROVIDED "AS IS", WITH NO WARRANTY WHATSOEVER, * EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, * ANY WARRANTIES OF ACCURACY, ACCESSIBILITY, COMPLETENESS, * FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, NON-INFRINGEMENT, * TITLE AND USEFULNESS. * * IN NO EVENT AND UNDER NO LEGAL THEORY, * WHETHER IN ACTION, CONTRACT, NEGLIGENCE, TORT, OR OTHERWISE, * SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR * ANY CLAIMS, DAMAGES OR OTHER LIABILITIES, * ARISING AS A RESULT OF USING OR OTHER DEALINGS IN THE SOFTWARE. */ package com.pureblue.quant.util.frequency; import org.joda.time.DateTime; /** * A quarterly frequency where a quarter is defined to start on the first of January, April, July * and October at 0:00 respectively and ends just before the next quarter starts. * * @author Johannes Lehmann */ public class Quarterly implements Frequency { @Override public DateTime periodBegin(DateTime time) { return new DateTime(time.getYear(), time.getMonthOfYear() - ((time.getMonthOfYear() - 1) % 3), 1, 0, 0, 0, 0, time.getZone()); } @Override public DateTime periodEnd(DateTime time) { return periodBegin(time).plusMonths(3); } }