ForwardWidgets
Widgets for Douban and Trakt watchlists plus personalized recommendations, live TV streaming including PlutoTV, Yatu ra…
Implementation of java.util.Calendar for the Umm Al-Qura calendar system.
git clone https://github.com/msarhan/ummalqura-calendar.gitmsarhan/ummalqura-calendarImplementation of
java.util.Calendarfor the Umm Al-Qura calendar system. Calculation used inversion 2.xwas derived from Java 8. This calculation is valid from 1300H to 1600H.
<dependency> <groupId>com.github.msarhan</groupId> <artifactId>ummalqura-calendar</artifactId> <version>[VERSION]</version> </dependency>
// Suppose current gregorian data/time is: Fri Apr 03 18:12:38 AST 2015 UmmalquraCalendar cal = new UmmalquraCalendar(); cal.get(Calendar.YEAR); // 1436 cal.get(Calendar.MONTH); // 5 <=> Jumada al-Akhirah cal.get(Calendar.DAY_OF_MONTH); // 14
Calendar cal = new UmmalquraCalendar(1436, UmmalquraCalendar.SHAABAN, 11); cal.getTime(); // Fri May 29 00:00:00 AST 2015
Calendar cal = new UmmalquraCalendar(1436, UmmalquraCalendar.SHAABAN, 11, 18, 12, 38); cal.getTime(); // Fri May 29 18:12:38 AST 2015
Calendar cal = new UmmalquraCalendar(); cal.set(Calendar.YEAR, 1436); cal.set(Calendar.MONTH, UmmalquraCalendar.SHAABAN); cal.set(Calendar.DAY_OF_MONTH, 11); cal.getTime(); // Fri May 29 20:57:37 AST 2015
Calendar cal = new UmmalquraCalendar(1436, UmmalquraCalendar.SHAABAN, 11); cal.get(Calendar.YEAR); // 1436 cal.get(Calendar.MONTH); // 7 cal.get(Calendar.DAY_OF_MONTH); // 11
Get month length in days
Calendar cal = new UmmalquraCalendar(1437, UmmalquraCalendar.MUHARRAM, 1); cal.lengthOfMonth(); // 30 // Or using static version: UmmalquraCalendar.lengthOfMonth(1437, UmmalquraCalendar.MUHARRAM); // 30 UmmalquraCalendar.lengthOfMonth(1437, UmmalquraCalendar.SAFAR); // 29
Get year length in days
Calendar cal = new UmmalquraCalendar(1437, UmmalquraCalendar.MUHARRAM, 1); cal.lengthOfYear(); // 354 // Or using static version: UmmalquraCalendar.lengthOfYear(1435); // 355 'Leap year' UmmalquraCalendar.lengthOfYear(1436); // 354 UmmalquraCalendar.lengthOfYear(1437); // 354
Read month or week day name in a given style and java.util.Locale.
Calendar cal = new UmmalquraCalendar(1436, UmmalquraCalendar.RABI_THANI, 21);
cal.getDisplayName(Calendar.MONTH, Calendar.SHORT, Locale.ENGLISH); // Rab-II
cal.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.ENGLISH); // Rabi' al-Thani
cal.getDisplayName(Calendar.MONTH, Calendar.SHORT, new Locale("ar")); // ربيع 2
cal.getDisplayName(Calendar.MONTH, Calendar.LONG, new Locale("ar")); // ربيع الثاني
cal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.ENGLISH); // Tue
cal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.ENGLISH); // Tuesday
cal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, new Locale("ar")); // ث
cal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, new Locale("ar")); // الثلاثاء
Read month or week day names as a java.util.Map in a given style and java.util.Locale.
Where entry key will be the field name and entry value will be the corresponding field value.
Calendar cal = new UmmalquraCalendar();
cal.getDisplayNames(Calendar.MONTH, Calendar.SHORT, Locale.ENGLISH);
//{Thul-Q=10, Rab-I=2, Saf=1, Shw=9, Muh=0, Thul-H=11, Sha=7, Rab-II=3, Raj=6, Ram=8, Jum-I=4, Jum-II=5}
cal.getDisplayNames(Calendar.MONTH, Calendar.LONG, Locale.ENGLISH);
//{Ramadhan=8, Rajab=6, Jumada al-Ula=4, Thul-Qi'dah=10, Sha'ban=7, Muharram=0, Safar=1, Thul-Hijjah=11, Shawwal=9, Rabi' al-Awwal=2, Jumada al-Akhirah=5, Rabi' al-Thani=3}
cal.getDisplayNames(Calendar.MONTH, Calendar.SHORT, new Locale("ar"));
//{جمادى 2=5, رمضان=8, جمادى 1=4, ربيع 2=3, ذو القعدة=10, صفر=1, محرم=0, رجب=6, ربيع 1=2, شوال=9, شعبان=7, ذو الحجة=11}
cal.getDisplayNames(Calendar.MONTH, Calendar.LONG, new Locale("ar"));
//{جمادى الآخرة=5, رمضان=8, ذو القعدة=10, صفر=1, محرم=0, رجب=6, ربيع الثاني=3, جمادى الأولى=4, شوال=9, شعبان=7, ربيع الأول=2, ذو الحجة=11}
cal.getDisplayNames(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.ENGLISH);
//{Thu=5, Wed=4, Sun=1, Sat=7, Fri=6, Tue=3, Mon=2}
cal.getDisplayNames(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.ENGLISH);
//{Saturday=7, Thursday=5, Monday=2, Tuesday=3, Wednesday=4, Friday=6, Sunday=1}
cal.getDisplayNames(Calendar.DAY_OF_WEEK, Calendar.SHORT, new Locale("ar"));
//{خ=5, ج=6, ح=1, ث=3, س=7, ر=4, ن=2}
cal.getDisplayNames(Calendar.DAY_OF_WEEK, Calendar.LONG, new Locale("ar"));
//{الاثنين=2, الخميس=5, الجمعة=6, الأربعاء=4, الثلاثاء=3, الأحد=1, السبت=7}
GregorianCalendar gCal = new GregorianCalendar(2012, Calendar.FEBRUARY, 12); Calendar uCal = new UmmalquraCalendar(); uCal.setTime(gCal.getTime()); uCal.get(Calendar.YEAR); // 1433 uCal.get(Calendar.MONTH); // 2 uCal.get(Calendar.DAY_OF_MONTH); // 20 uCal.getDisplayName(Calendar.MONTH, Calendar.SHORT, Locale.ENGLISH);
Calendar uCal = new UmmalquraCalendar(1433, UmmalquraCalendar.RABI_AWWAL, 15); GregorianCalendar gCal = new GregorianCalendar(); gCal.setTime(uCal.getTime()); gCal.get(Calendar.YEAR); // 2012 gCal.get(Calendar.MONTH); // 1 gCal.get(Calendar.DAY_OF_MONTH); // 7
You can use java.text.SimpleDateFormat to format Ummalqura date.
Calendar uCal = new UmmalquraCalendar(1433, UmmalquraCalendar.RABI_AWWAL, 8, 20, 45, 10);
SimpleDateFormat dateFormat = new SimpleDateFormat("", Locale.ENGLISH);
dateFormat.setCalendar(uCal);
dateFormat.applyPattern("d");
dateFormat.format(uCal.getTime()); // 8
dateFormat.applyPattern("dd");
dateFormat.format(uCal.getTime()); // 08
dateFormat.applyPattern("E");
dateFormat.format(uCal.getTime()); // Tue
dateFormat.applyPattern("EEEE");
dateFormat.format(uCal.getTime()); // Tuesday
dateFormat.applyPattern("M");
dateFormat.format(uCal.getTime()); // 3
dateFormat.applyPattern("MM");
dateFormat.format(uCal.getTime()); // 03
dateFormat.applyPattern("MMM");
dateFormat.format(uCal.getTime()); // Rab-I
dateFormat.applyPattern("MMMM");
dateFormat.format(uCal.getTime()); // Rabi' al-Awwal
dateFormat.applyPattern("y");
dateFormat.format(uCal.getTime()); // 1433
dateFormat.applyPattern("yy");
dateFormat.format(uCal.getTime()); // 33
dateFormat.applyPattern("EEEE d MMMM, y");
dateFormat.format(uCal.getTime()); // Tuesday 8 Rabi' al-Awwal, 1433
dateFormat.applyPattern("y/MM/dd");
dateFormat.format(uCal.getTime()); // 1433/03/08
dateFormat.applyPattern("y/MM/dd hh:mm a");
dateFormat.format(uCal.getTime()); // 1433/03/08 08:45 PM
Calendar uCal = new UmmalquraCalendar(1433, UmmalquraCalendar.RABI_AWWAL, 8, 20, 45, 10);
SimpleDateFormat dateFormat = new SimpleDateFormat("", new Locale("ar"));
dateFormat.setCalendar(uCal);
dateFormat.applyPattern("E");
dateFormat.format(uCal.getTime()); // ث
dateFormat.applyPattern("EEEE");
dateFormat.format(uCal.getTime()); // الثلاثاء
dateFormat.applyPattern("MMM");
dateFormat.format(uCal.getTime()); // ربيع 1
dateFormat.applyPattern("MMMM");
dateFormat.format(uCal.getTime()); // ربيع الأول
dateFormat.applyPattern("EEEE d MMMM, y");
dateFormat.format(uCal.getTime()); // الثلاثاء 8 ربيع الأول, 1433
You can use java.text.SimpleDateFormat to parse Ummalqura date.
Locale en = Locale.ENGLISH;
UmmalquraCalendar uCal = new UmmalquraCalendar(en);
SimpleDateFormat dateFormat = new SimpleDateFormat("", en);
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
dateFormat.setCalendar(uCal);
uCal.set(Calendar.YEAR, 1420); // Used to properly format 'yy' pattern
dateFormat.set2DigitYearStart(uCal.getTime()); // Used to properly format 'yy' pattern
Calendar cal = new UmmalquraCalendar(en);
dateFormat.applyPattern("d/M/y");
cal.setTime(dateFormat.parse("4/7/1435"));
cal.get(Calendar.YEAR); // 1435
cal.getDisplayName(Calendar.MONTH, Calendar.LONG, en); // Rajab
cal.get(Calendar.DAY_OF_MONTH); // 4
dateFormat.applyPattern("MMMM d, y");
cal.setTime(dateFormat.parse("Jumada al-Ula 10, 1436"));
cal.get(Calendar.YEAR); // 1436
cal.getDisplayName(Calendar.MONTH, Calendar.LONG, en); // Jumada al-Ula
cal.get(Calendar.DAY_OF_MONTH); // 10
dateFormat.applyPattern("EEEE, MMMM dd, y");
cal.setTime(dateFormat.parse("Saturday, Sha'ban 07, 1434"));
cal.get(Calendar.YEAR); // 1434
cal.getDisplayName(Calendar.MONTH, Calendar.LONG, en); // Sha'ban
cal.get(Calendar.DAY_OF_MONTH); // 7
dateFormat.applyPattern("EEEE, MMMM d, yy hh:mm:ss");
cal.setTime(dateFormat.parse("Saturday, Jumada al-Ula 23, 36 12:19:44"));
cal.get(Calendar.YEAR); // 1436
cal.getDisplayName(Calendar.MONTH, Calendar.LONG, en); // Jumada al-Ula
cal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, en); // Saturday
cal.get(Calendar.DAY_OF_MONTH); // 23
Locale ar = new Locale("ar");
UmmalquraCalendar uCal = new UmmalquraCalendar(ar);
SimpleDateFormat dateFormat = new SimpleDateFormat("", ar);
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
dateFormat.setCalendar(uCal);
// Used to properly format 'yy' pattern for dates in 14th century
uCal.set(Calendar.YEAR, 1400);
dateFormat.set2DigitYearStart(uCal.getTime());
Calendar cal = new UmmalquraCalendar(ar);
dateFormat.applyPattern("d/M/y");
cal.setTime(dateFormat.parse("4/7/1435");
cal.get(Calendar.YEAR); // 1435
cal.getDisplayName(Calendar.MONTH, Calendar.LONG, ar); // رجب
cal.get(Calendar.DAY_OF_MONTH); // 4
dateFormat.applyPattern("MMMM d, y");
cal.setTime(dateFormat.parse("جمادى الأولى 10, 1436"));
cal.get(Calendar.YEAR); // 1436
cal.getDisplayName(Calendar.MONTH, Calendar.LONG, ar); // جمادى الأولى
cal.get(Calendar.DAY_OF_MONTH); // 10
dateFormat.applyPattern("EEEE, MMMM dd, y");
cal.setTime(dateFormat.parse("السبت, شعبان 07, 1434"));
cal.get(Calendar.YEAR); // 1434
cal.getDisplayName(Calendar.MONTH, Calendar.LONG, ar); // شعبان
cal.get(Calendar.DAY_OF_MONTH); // 7
dateFormat.applyPattern("EEEE, MMMM d, yy hh:mm:ss");
cal.setTime(dateFormat.parse("السبت, جمادى الأولى 23, 36 12:19:44"));
cal.get(Calendar.YEAR); // 1436
cal.getDisplayName(Calendar.MONTH, Calendar.LONG, ar); // جمادى الأولى
cal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, ar); // السبت
cal.get(Calendar.DAY_OF_MONTH); // 23
Currently, ummalqura-calendar supports the following locales: Arabic, English and French.
You can add another locale by creating properties file with the following aspects:
UmmalquraFormatData_[LOCALE].properties, where [LOCALE] should be a language tag. e.g. tr, zh_CNcom.github.msarhan.ummalqura.calendar.text package and add it to the classpath.As an example, French locale has been added as a properties file.
Please note that if properties file contains special characters that cannot be
represented in ISO-8859-1 encoding; it must be encoded by unicode escapes in the form \uXXXX.
more like this
Widgets for Douban and Trakt watchlists plus personalized recommendations, live TV streaming including PlutoTV, Yatu ra…
search projects, people, and tags