Java examples for java.util:Calendar Julian
Converts a provided Persian date to the Julian Day Number (i.e.
/**/* w ww . j av a 2 s .co m*/ * Persian Calendar see: http://code.google.com/p/persian-calendar/ Copyright (C) 2012 Mortezaadi@gmail.com PersianCalendarUtils.java Persian Calendar is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ public class Main{ public static void main(String[] argv) throws Exception{ long year = 2; int month = 2; int day = 2; System.out.println(persianToJulian(year,month,day)); } /** * Converts a provided Persian (Shamsi) date to the Julian Day Number * (i.e. the number of days since January 1 in the year 4713 BC). * Since the Persian calendar is a highly regular calendar, converting to and from a Julian Day Number * is not as difficult as it looks. Basically it's a mather of dividing, rounding and multiplying. * This routine uses Julian Day Number 1948321 as focal point, since that Julian Day Number * corresponds with 1 Farvardin (1) 1. * @param year int persian year * @param month int persian month * @param day int persian day * @return long */ public static long persianToJulian(long year, int month, int day) { return 365L * ((ceil(year - 474L, 2820D) + 474L) - 1L) + ((long) Math .floor((682L * (ceil(year - 474L, 2820D) + 474L) - 110L) / 2816D)) + (PersianCalendarConstants.PERSIAN_EPOCH - 1L) + 1029983L * ((long) Math.floor((year - 474L) / 2820D)) + (month < 7 ? 31 * month : 30 * month + 6) + day; } /** * Ceil function in original algorithm * @param double1 * @param double2 * @return long */ public static long ceil(double double1, double double2) { return (long) (double1 - double2 * Math.floor(double1 / double2)); } }