Git Product home page Git Product logo

itl-java's Introduction

بسم الله الرّحمٰن الرّحيم

ITL Java is a Java library for calculating prayer (salat) times, qibla direction, and Hijri date. This library is a porting of the legendary ITL (Islamic Tools and Libraries) with Java flavor. The original C version is available at arabeyes-org/ITL repository.

License

The original ITL is licensed under GNU LGPL (Lesser General Public License) which means it is free and remains free: not only the "original" is free but also the "derived", which implies that ITL Java is also LGPL-licensed. Any modification of the library must be released (open-sourced) under LGPL license. Any program using this library must make the users free (provide a flexible way) to change the library implementation/version used.

For more flexible license please see ICLib.

Usage examples

Examples below will show how simple using this library. Longer example is available in Example.java

1. Prayer times and qibla direction

    // Initialize
    Prayer calculator = new Prayer()
            .setMethod(StandardMethod.EGYPT_SURVEY) // Egyptian General Authority of Survey
            .setLocation(-6.37812775, 106.8342445, 0) // lat, lng, height AMSL
            .setPressure(1010)
            .setTemperature(10)
            .setDate(new Date(), TimeZone.getDefault()); // today, here
    TimeNames names = TimeNames.getInstance(Locale.getDefault()); // for getting prayer names

    // Calculate prayer times
    for (Map.Entry<TimeType, PrayerTime> time : calculator.getPrayerTimes().entrySet()) {
        System.out.printf("%s %s\n",
                names.get(time.getKey()), // prayer name
                time.getValue()); // prayer time
    }
    // or
    for (PrayerTime time : calculator.getPrayerTimeArray()) {
        System.out.println(time.format("HH:mm:ss"));
    }

    // Calculate qibla direction
    System.out.println("Qibla: " + calculator.getNorthQibla());

2. Hijri date

    // Initialize
    Hijri calculator = new Hijri(Locale.getDefault()); // locale used for names (months, etc)
    ConvertedDate date;

    // Gregorian to Hijri
    date = calculator.hDate(2, 12, 2016); // or hDate(new Date());
    System.out.println(date.format("EEEE, d MMMM yyyy G")); // converted date
    System.out.printf("%s-%s-%s\n", // converted date
            date.getDayOfMonth(),
            date.getMonth(),
            date.getYear());
    System.out.println(date.formatSource("EEE, dd-MM-yy")); // source date (before converted)
    System.out.println(date.toDate());

    // Hijri to Gregorian
    date = calculator.gDate(1, 9, 1438);
    System.out.println(date.format("EEE, d MMM yyyy G"));

3. Umm Al-Qura date

    // Initialize
    UmmAlqura calculator = new UmmAlqura(Locale.getDefault());
    ConvertedDate date;

    // Gregorian to Hijri
    date = calculator.g2h(2, 12, 2016);
    System.out.println(date.format("EEEE, d MMMM yyyy"));

    // Hijri to Gregorian
    date = calculator.h2g(1, 9, 1438);
    System.out.println(date.format("EEE, d MMM yyyy"));

Prayer times calculation methods

You can adjust your own method before calculating. However, it is encouraged to use one of these built-in methods.

  • Egyptian General Authority of Survey - Usually used in Indonesia, Iraq, Jordan, Lebanon, Malaysia, Singapore, Syria, parts of Africa, and parts of United States.
  • University of Islamic Sciences, Karachi (Shafi'i) - Usually used in Iran, Kuwait, and parts of Europe.
  • University of Islamic Sciences, Karachi (Hanafi) - Usually used in Afghanistan, Bangladesh, and India.
  • Islamic Society of North America - Usually used in Canada, Parts of UK, and parts of United States.
  • Muslim World League (MWL) - Usually used in parts of Europe, Far East, and parts of United States.
  • Umm Al-Qurra University - Usually used in Saudi Arabia.
  • Fixed Ishaa Angle Interval (always 90) - Usually used in Bahrain, Oman, Qatar, United Arab Emirates.
  • Moonsighting Committee Worldwide
  • Morocco Awqaf Ministry, Morocco

Porting notes

Some differences between the original C and this Java version:

  • hijri/hijri.h and hijri/hijri.corg.arabeyes.itl.hijri.HijriModule and org.arabeyes.itl.hijri.Hijri
  • hijri/hijri.h/sDateorg.arabeyes.itl.hijri.HijriModule.sDate and org.arabeyes.itl.hijri.ConvertedDate
  • hijri/umm_alqura.corg.arabeyes.itl.hijri.UmmAlquraModule and org.arabeyes.itl.hijri.UmmAlqura
  • prayertime/astro.h and prayertime/astro.corg.arabeyes.itl.prayertime.AstroModule
  • prayertime/prayer.h and prayertime/prayer.corg.arabeyes.itl.prayertime.PrayerModule and org.arabeyes.itl.prayertime.Prayer
  • prayertime/prayer.h/Prayerorg.arabeyes.itl.prayertime.PrayerTime
  • prayertime/prayer.h/Methodorg.arabeyes.itl.prayertime.Method
  • prayertime/prayer.c/methodsorg.arabeyes.itl.prayertime.StandardMethod
  • prayertime/prayer.c/exmethodsorg.arabeyes.itl.prayertime.ExtremeMethod
  • prayertime/prayer.c/salatTypeorg.arabeyes.itl.prayertime.TimeType

itl-java's People

Contributors

fikr4n avatar pyguy2 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.