- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用此算法将日历日期更改为波斯日历。 here它工作正常但是:当我想创建一个新的构造函数来获取参数并将字符串更改为波斯语日期时,比如将 "2012/3/6"
更改为波斯语(而不是使用内部日期)我有一个非常奇怪的问题和安装不匹配点。所以当期望 1392/9/4 时,算法显示 1392/8/4。
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import android.net.ParseException;
import android.util.Log;
public class ShamsiCalleder {
private class SolarCalendar {
public String strWeekDay = "";
public String strMonth = "";
int date;
int month;
int year;
public SolarCalendar(String str)
{
//SimpleDateFormat postFormater = new SimpleDateFormat("MMMM dd, yyyy");
//String newDateStr = postFormater.format(dateObj);
// for converting input date
Date MiladiDate = null;
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
try {
MiladiDate = format.parse(str);
System.out.println(date);
} catch (java.text.ParseException e) {
e.printStackTrace();
}
calcSolarCalendar(MiladiDate);
}
public SolarCalendar()
{
Date MiladiDate = new Date();
Log.i("PRS", "from solarcalender="+MiladiDate);
calcSolarCalendar(MiladiDate);
}
public SolarCalendar(Date MiladiDate)
{
calcSolarCalendar(MiladiDate);
}
private void calcSolarCalendar(Date MiladiDate) {
int ld;
int miladiYear = MiladiDate.getYear() + 1900;
int miladiMonth = MiladiDate.getMonth() + 1;
int miladiDate = MiladiDate.getDate();
int WeekDay = MiladiDate.getDay();
int[] buf1 = new int[12];
int[] buf2 = new int[12];
buf1[0] = 0;
buf1[1] = 31;
buf1[2] = 59;
buf1[3] = 90;
buf1[4] = 120;
buf1[5] = 151;
buf1[6] = 181;
buf1[7] = 212;
buf1[8] = 243;
buf1[9] = 273;
buf1[10] = 304;
buf1[11] = 334;
buf2[0] = 0;
buf2[1] = 31;
buf2[2] = 60;
buf2[3] = 91;
buf2[4] = 121;
buf2[5] = 152;
buf2[6] = 182;
buf2[7] = 213;
buf2[8] = 244;
buf2[9] = 274;
buf2[10] = 305;
buf2[11] = 335;
if ((miladiYear % 4) != 0) {
date = buf1[miladiMonth - 1] + miladiDate;
if (date > 79) {
date = date - 79;
if (date <= 186) {
switch (date % 31) {
case 0:
month = date / 31;
date = 31;
break;
default:
month = (date / 31) + 1;
date = (date % 31);
break;
}
year = miladiYear - 621;
} else {
date = date - 186;
switch (date % 30) {
case 0:
month = (date / 30) + 6;
date = 30;
break;
default:
month = (date / 30) + 7;
date = (date % 30);
break;
}
year = miladiYear - 621;
}
} else {
if ((miladiYear > 1996) && (miladiYear % 4) == 1) {
ld = 11;
} else {
ld = 10;
}
date = date + ld;
switch (date % 30) {
case 0:
month = (date / 30) + 9;
date = 30;
break;
default:
month = (date / 30) + 10;
date = (date % 30);
break;
}
year = miladiYear - 622;
}
} else {
date = buf2[miladiMonth - 1] + miladiDate;
if (miladiYear >= 1996) {
ld = 79;
} else {
ld = 80;
}
if (date > ld) {
date = date - ld;
if (date <= 186) {
switch (date % 31) {
case 0:
month = (date / 31);
date = 31;
break;
default:
month = (date / 31) + 1;
date = (date % 31);
break;
}
year = miladiYear - 621;
} else {
date = date - 186;
switch (date % 30) {
case 0:
month = (date / 30) + 6;
date = 30;
break;
default:
month = (date / 30) + 7;
date = (date % 30);
break;
}
year = miladiYear - 621;
}
}
else {
date = date + 10;
switch (date % 30) {
case 0:
month = (date / 30) + 9;
date = 30;
break;
default:
month = (date / 30) + 10;
date = (date % 30);
break;
}
year = miladiYear - 622;
}
}
switch (month) {
case 1:
strMonth = "�روردين";
break;
case 2:
strMonth = "ارديبهشت";
break;
case 3:
strMonth = "خرداد";
break;
case 4:
strMonth = "تير";
break;
case 5:
strMonth = "مرداد";
break;
case 6:
strMonth = "شهريور";
break;
case 7:
strMonth = "مهر";
break;
case 8:
strMonth = "آبان";
break;
case 9:
strMonth = "آذر";
break;
case 10:
strMonth = "دي";
break;
case 11:
strMonth = "بهمن";
break;
case 12:
strMonth = "اس�ند";
break;
}
switch (WeekDay) {
case 0:
strWeekDay = "يکشنبه";
break;
case 1:
strWeekDay = "دوشنبه";
break;
case 2:
strWeekDay = "سه شنبه";
break;
case 3:
strWeekDay = "چهارشنبه";
break;
case 4:
strWeekDay = "پنج شنبه";
break;
case 5:
strWeekDay = "جمعه";
break;
case 6:
strWeekDay = "شنبه";
break;
}
}
}
public static String getCurrentShamsidate() {
Locale loc = new Locale("en_US");
ShamsiCalleder shamsi = new ShamsiCalleder();
SolarCalendar sc = shamsi.new SolarCalendar();
return String.valueOf(sc.year) + "/" + String.format(loc, "%02d",
sc.month) + "/" + String.format(loc, "%02d", sc.date);
}
public static String getCurrentShamsidate(String str) {
Locale loc = new Locale("en_US");
ShamsiCalleder shamsi = new ShamsiCalleder();
SolarCalendar sc = shamsi.new SolarCalendar(str);
Log.i("PRS", "mointh is="+sc.month);
return String.valueOf(sc.year) + "/" + String.format(loc, "%02d",
sc.month) + "/" + String.format(loc, "%02d", sc.date);
}
所以当我调用:ShamsiCalleder.getCurrentShamsidate()
它返回 1392/10/4(今天正好!)
当我打电话时(今天):ShamsiCalleder.getCurrentShamsidate("2013/12/25")
返回 1392/9/4
我希望有人能帮助我解决这个问题。关于。
最佳答案
好吧,我终于找到了这个问题的根源。
我曾经使用此代码获取当前日期:
Calendar c = Calendar.getInstance();
int day = c.get(Calendar.DATE);
int mounth = c.get(Calendar.MONTH);
int year = c.get(Calendar.YEAR);
但我发现月份是从 0 开始索引的。所以当它返回 11 时,它意味着 Dec.
所以我把代码改成这样:
Calendar c = Calendar.getInstance();
int day = c.get(Calendar.DATE);
int mounth = c.get(Calendar.MONTH)+1;
int year = c.get(Calendar.YEAR);
感谢我所有的 friend 。
关于android - Android 中带有字符串参数的 shamsi/Jalali 日历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20762404/
我在 Jalali(波斯日期系统)中有一个日期,我需要将其转发 1 个月。问题是,当我使用 myDateTime.AddMonths(1) 添加 1 个月时,我的日期提前了 1 个公历月,而我想要一个
我需要带有剑道 UI 的 Jalali 日历(波斯历)或 Jalali 日期选择器,但我不知道如何获得它? 最佳答案 Kendo UI 目前仅支持公历。不支持波斯历。 关于calendar - 如何在
我有一个这样的函数: var date = new Date(); var d = date.getDate(); var m = date.getMonth(); var y = date.getF
我正在使用 C# 开发阿拉伯语/达里语/普什图语(针对阿富汗)的应用程序,还使用 Jalali/波斯日历进行日期选择。我想在保存到数据库之前验证输入日期。我正在使用以下函数进行验证并将 Jalal
我想知道是否可以在谷歌表中使用函数将公历转换为 jalali。事实上,我有一些日期,例如: February 20, 2021 4:30 AM 我需要在它的前面单元格中以 Jalali 格式(无时间)
如您所知,贾拉利历每四年有一次飞跃(当然,也有一些异常(exception)) 而不是一年有 365 天,而是有 366 天 :) 另一个问题是有些月份是 29 天,有些月份是 30 天,有些月份是
我在 Confluence 中使用 Confiforms 制作了一个表单,其中包括波斯日历字段。有一个过滤器控制宏来过滤记录。但此过滤器不适用于波斯日期。因为波斯日期保存为时间戳,但波斯日历字段显示的
我正在使用 syncfusion 作为日历包,我想将它的时间更改为 jalali(波斯语)我该怎么做?我已经尝试过本地化,但这只是改变了语言, 最佳答案 如前所述here , syncfusion 不
我在我的网站上使用 fullcalendar (fullcalendar.io)。 我的网站有另一种语言,需要 Jalali 日历。因此,我尝试将 fullcalendar 格式更改为 jalali,
Zend 是否支持 jalali 日期和日历? 我怎样才能得到它? 我试过这个: $locale = new Zend_Locale('fa_IR'); $date = new Zen
我有一个 Highstock StockChart,它使用 Persian(Jalali) 日期。 我在几天和几个月内使用dataGrouping。虽然数据分组在天上很好,但月分组不起作用。这是因为贾
如何在 Qt 中将公历日期转换为波斯日期? 最佳答案 QDateConvertor类可以帮助您将日期格式从 geogorian 转换为 jalali,将 jalali 转换为 geogorian。 编
你好 我需要一个 Jalali 日期选择器以在我的 Swing 应用程序中使用。 你能给我推荐一个吗? 谢谢 最佳答案 也许 this可以帮助 关于java - Jalali 日历的任何 Java 日
我想将时间和日期日历更改为 Jalali (伊朗使用的 Shamsi 日历)在我的系统中。我该怎么做? "language_title" => "English", "dir" => "ltr", /
已结束。此问题不符合 Stack Overflow guidelines .它目前不接受答案。 我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。 关闭
我正在使用 amchart,但我无法使用 Jalali 日历,因为它不支持非公历。 我想在日期轴中包含 Jalali 日期。 我怎样才能改变它? 最佳答案 您不能更改日期时间的区域设置。但您可以通过获
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4 个月前关闭。 Improve t
我正在尝试开发这样的日历 https://pub.dev/packages/syncfusion_flutter_calendar但我不知道如何将这个包用于 Jalali 日期(波斯日期)。 最佳答案
我在 React 应用程序中使用 Material-UI 选择器,但无法获取 Jalali 日历 example上类。 我使用的软件包版本是: "@date-io/jalaali": "^1.3.13
我想在 Jalali 日历中找到一个公共(public)日,我使用 npm Jalali-moment 和这段代码 var moment = require('jalali-moment'); mom
我是一名优秀的程序员,十分优秀!