- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
Android 中是否有任何方法或库可以将公历日期转换为回历(伊斯兰)日期?我找到了一些 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 - 公历到回历(伊斯兰)日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17377219/
我知道这个问题被问了很多次,但我没有找到正确的方法。我有一个 String日期如 01-08-1994。我想将其转换为 Hijri日期。 使用 IslamicCalendar . 最佳答案 java.
我一直在努力为移动应用程序寻找良好的国际日历支持(包括 Hirji)。我的主要限制是 JVM 是 1.3 并且我们只有 AWT。有一个选项可以转移到另一个为我们提供 SWT 的 JVM,但我似乎找不到
我的应用程序是关于回历(伊斯兰)日历的,但默认的 android CalendarView 是公历!如何自定义 Android 日历 View ?! 我需要这样的东西: 最佳答案 您好,请访问所有给定
参见 SO 15728744和 SO 51058875 . 以下怎么可能是正确的: LocalDate gregorianDate = LocalDate.parse(gregorianString,
我会将公历日期转换为回历(伊斯兰)日期。可能在网上搜索后,我找到了一个源代码来转换它。我将代码从 Java 和 PHP 转换为 C base。 该工具有时可以毫无问题地工作。但是有些日子有问题。 我需
有没有办法为 Hijri(伊斯兰)日历而不是默认日历构建日期选择器? 最佳答案 您可以使用 HijriDatePicker Library : 提供日期和时间选择器。 同时支持公历和回历(使用 umm
This是一个 DHTML 公历小部件。我正在尝试制作一个 Hijri(波斯日历 - Jalali)小部件。有人有什么想法吗? 最佳答案 试试这个网站,它包含 JQuery 日历: http://ke
2022 年 3 月 3 日是这个回历月的结束(今年 1443 AH 的 Rajab 月);即 30 Rajab 1443 AH。 根据伊斯兰(回历)日历,根据所有网站、应用程序、MS Office
我是一名优秀的程序员,十分优秀!