using System;
using System.Text;
using System.Linq;
public class Quarter
{
public static long GetQuarters(DateTime dt1, DateTime dt2)
{
double d1Quarter = GetQuarter(dt1.Month);
double d2Quarter = GetQuarter(dt2.Month);
double d1 = d2Quarter - d1Quarter;
double d2 = (4 * (dt2.Year - dt1.Year));
return Round(d1 + d2);
}
private static int GetQuarter(int nMonth)
{
if (nMonth <= 3)
return 1;
if (nMonth <= 6)
return 2;
if (nMonth <= 9)
return 3;
return 4;
}
private static long Round(double dVal)
{
if (dVal >= 0)
return (long)Math.Floor(dVal);
return (long)Math.Ceiling(dVal);
}
}
public class Program
{
public static void Main(string[] args)
{
DateTime dt1 = new DateTime(2012, 1, 1);
DateTime dt2 = new DateTime(2013, 1, 15);
long countQuarters = Quarter.GetQuarters(dt1, dt2);
Console.Write("Quarters between: " + countQuarters);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGV4dDsKdXNpbmcgU3lzdGVtLkxpbnE7CgogICAgICAgIHB1YmxpYyBjbGFzcyBRdWFydGVyCiAgICAgICAgewogICAgICAgICAgICBwdWJsaWMgc3RhdGljIGxvbmcgR2V0UXVhcnRlcnMoRGF0ZVRpbWUgZHQxLCBEYXRlVGltZSBkdDIpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGRvdWJsZSBkMVF1YXJ0ZXIgPSBHZXRRdWFydGVyKGR0MS5Nb250aCk7CiAgICAgICAgICAgICAgICBkb3VibGUgZDJRdWFydGVyID0gR2V0UXVhcnRlcihkdDIuTW9udGgpOwogICAgICAgICAgICAgICAgZG91YmxlIGQxID0gZDJRdWFydGVyIC0gZDFRdWFydGVyOwogICAgICAgICAgICAgICAgZG91YmxlIGQyID0gKDQgKiAoZHQyLlllYXIgLSBkdDEuWWVhcikpOwogICAgICAgICAgICAgICAgcmV0dXJuIFJvdW5kKGQxICsgZDIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwcml2YXRlIHN0YXRpYyBpbnQgR2V0UXVhcnRlcihpbnQgbk1vbnRoKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZiAobk1vbnRoIDw9IDMpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICBpZiAobk1vbnRoIDw9IDYpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDI7CiAgICAgICAgICAgICAgICBpZiAobk1vbnRoIDw9IDkpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDM7CiAgICAgICAgICAgICAgICByZXR1cm4gNDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgbG9uZyBSb3VuZChkb3VibGUgZFZhbCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYgKGRWYWwgPj0gMCkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGxvbmcpTWF0aC5GbG9vcihkVmFsKTsKICAgICAgICAgICAgICAgIHJldHVybiAobG9uZylNYXRoLkNlaWxpbmcoZFZhbCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAKcHVibGljIGNsYXNzIFByb2dyYW0KewogCnB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKHN0cmluZ1tdIGFyZ3MpCnsKICAgICAgICAgICAgRGF0ZVRpbWUgZHQxID0gbmV3IERhdGVUaW1lKDIwMTIsIDEsIDEpOwogICAgICAgICAgICBEYXRlVGltZSBkdDIgPSBuZXcgRGF0ZVRpbWUoMjAxMywgMSwgMTUpOwogICAgICAgICAgICBsb25nIGNvdW50UXVhcnRlcnMgPSBRdWFydGVyLkdldFF1YXJ0ZXJzKGR0MSwgZHQyKTsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZSgiUXVhcnRlcnMgYmV0d2VlbjogIiArIGNvdW50UXVhcnRlcnMpOwp9Cn0=