Here you can find the source of monthsBetween(String pFormerStr, String pLatterStr)
public static int monthsBetween(String pFormerStr, String pLatterStr)
//package com.java2s; /*/*from w ww. j a va 2s. c om*/ * (C) 2013-2015 Asiainfo-linkage Group Holding Limited. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * Authors: * davylin<linjxljx@gmail.com> */ import java.util.*; public class Main { static StringTokenizer sToken; public static int monthsBetween(String pFormerStr, String pLatterStr) { GregorianCalendar vFormer = parse2Cal(pFormerStr); GregorianCalendar vLatter = parse2Cal(pLatterStr); return monthsBetween(vFormer, vLatter); } public static int monthsBetween(GregorianCalendar pFormer, GregorianCalendar pLatter) { GregorianCalendar vFormer = pFormer; GregorianCalendar vLatter = pLatter; boolean vPositive = true; if (pFormer.before(pLatter)) { vFormer = pFormer; vLatter = pLatter; } else { vFormer = pLatter; vLatter = pFormer; vPositive = false; } int vCounter; for (vCounter = 0; vFormer.get(1) != vLatter.get(1) || vFormer.get(2) != vLatter.get(2); vCounter++) vFormer.add(2, 1); if (vPositive) return vCounter; else return -vCounter; } public static GregorianCalendar parse2Cal(String pDateStr) { sToken = new StringTokenizer(pDateStr, "-/"); int vYear = Integer.parseInt(sToken.nextToken()); int vMonth = Integer.parseInt(sToken.nextToken()) - 1; int vDayOfMonth = Integer.parseInt(sToken.nextToken()); return new GregorianCalendar(vYear, vMonth, vDayOfMonth); } }