android–Gregorian到Hijri(伊斯兰教)约会

android–Gregorian到Hijri(伊斯兰教)约会,第1张

概述Android中是否有任何方式或库可以将格里高利日期转换为Hijri(伊斯兰)日期?我找到了一些Java库,比如JodaTime,但我需要一些适用于Android的东西.解决方法:我发现了这个,但我还没有测试过publicclassDateHijri{staticdoublegmod(doublen,doublem){return(

Android中是否有任何方式或库可以将格里高利日期转换为Hijri(伊斯兰)日期?我找到了一些Java库,比如Joda Time,但我需要一些适用于AndroID的东西.

解决方法:

我发现了这个,但我还没有测试过

public class DateHijri {    static double gmod(double n, double m) {        return ((n % m) + m) % m;    }    static double[] kuwaiticalendar(boolean adjust) {        Calendar today = Calendar.getInstance();        int adj = 0;        if (adjust) {            adj = 0;        } else {            adj = 1;        }        if (adjust) {            int adjustmili = 1000 * 60 * 60 * 24 * adj;            long todaymili = today.getTimeInMillis() + adjustmili;            today.setTimeInMillis(todaymili);        }        double day = today.get(Calendar.DAY_OF_MONTH);        double month = today.get(Calendar.MONTH);        double year = today.get(Calendar.YEAR);        double m = month + 1;        double y = year;        if (m < 3) {            y -= 1;            m += 12;        }        double a = Math.floor(y / 100.);        double b = 2 - a + Math.floor(a / 4.);        if (y < 1583)            b = 0;        if (y == 1582) {            if (m > 10)                b = -10;            if (m == 10) {                b = 0;                if (day > 4)                    b = -10;            }        }        double jd = Math.floor(365.25 * (y + 4716))                + Math.floor(30.6001 * (m + 1)) + day + b - 1524;        b = 0;        if (jd > 2299160) {            a = Math.floor((jd - 1867216.25) / 36524.25);            b = 1 + a - Math.floor(a / 4.);        }        double bb = jd + b + 1524;        double cc = Math.floor((bb - 122.1) / 365.25);        double dd = Math.floor(365.25 * cc);        double ee = Math.floor((bb - dd) / 30.6001);        day = (bb - dd) - Math.floor(30.6001 * ee);        month = ee - 1;        if (ee > 13) {            cc += 1;            month = ee - 13;        }        year = cc - 4716;        double wd = gmod(jd + 1, 7) + 1;        double iyear = 10631. / 30.;        double epochastro = 1948084;        double epochcivil = 1948085;        double shift1 = 8.01 / 60.;        double z = jd - epochastro;        double cyc = Math.floor(z / 10631.);        z = z - 10631 * cyc;        double j = Math.floor((z - shift1) / iyear);        double iy = 30 * cyc + j;        z = z - Math.floor(j * iyear + shift1);        double im = Math.floor((z + 28.5001) / 29.5);        if (im == 13)            im = 12;        double ID = z - Math.floor(29.5001 * im - 29);        double[] myRes = new double[8];        myRes[0] = day; // calculated day (CE)        myRes[1] = month - 1; // calculated month (CE)        myRes[2] = year; // calculated year (CE)        myRes[3] = jd - 1; // julian day number        myRes[4] = wd - 1; // weekday number        myRes[5] = ID; // islamic date        myRes[6] = im - 1; // islamic month        myRes[7] = iy; // islamic year        return myRes;    }    static String writeIslamicdate() {        String[] wdnames = { "Ahad", "Ithnin", "Thulatha", "Arbaa", "Khams",                "Jumuah", "Sabt" };        String[] iMonthnames = { "Muharram", "Safar", "Rabi'ul Awwal",                "Rabi'ul Akhir", "Jumadal ula", "Jumadal Akhira", "Rajab",                "Sha'ban", "Ramadan", "Shawwal", "Dhul Qa'ada", "Dhul Hijja" };        // This Value is used to give the correct day +- 1 day        boolean dayTest = true;        double[] IDate = kuwaiticalendar(dayTest);        String outputIslamicdate = wdnames[(int) IDate[4]] + ", " + IDate[5]                + " " + iMonthnames[(int) IDate[6]] + " " + IDate[7] + " AH";        return outputIslamicdate;    }}
总结

以上是内存溢出为你收集整理的android – Gregorian到Hijri(伊斯兰教)约会全部内容,希望文章能够帮你解决android – Gregorian到Hijri(伊斯兰教)约会所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1106753.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存