samanzamani / persiandate Goto Github PK
View Code? Open in Web Editor NEWPersian date for android
License: BSD 3-Clause "New" or "Revised" License
Persian date for android
License: BSD 3-Clause "New" or "Revised" License
How to use parseGrg(String date,String pattern) ?
سلام
بعد از اضافه کردن به پروژه و بیلد کردن به ارور زیر بر می خوریم:
Duplicate class saman.zamani.persiandate.BuildConfig found in modules jetified-PersianDate-0.8-runtime (com.github.samanzamani.persiandate:PersianDate:0.8) and jetified-PersianDate-1.1-runtime (com.github.samanzamani:PersianDate:1.1)
Duplicate class saman.zamani.persiandate.PersianDate found in modules jetified-PersianDate-0.8-runtime (com.github.samanzamani.persiandate:PersianDate:0.8) and jetified-PersianDate-1.1-runtime (com.github.samanzamani:PersianDate:1.1)
Duplicate class saman.zamani.persiandate.PersianDateFormat found in modules jetified-PersianDate-0.8-runtime (com.github.samanzamani.persiandate:PersianDate:0.8) and jetified-PersianDate-1.1-runtime (com.github.samanzamani:PersianDate:1.1)
Duplicate class saman.zamani.persiandate.PersianDateFormat$1 found in modules jetified-PersianDate-0.8-runtime (com.github.samanzamani.persiandate:PersianDate:0.8) and jetified-PersianDate-1.1-runtime (com.github.samanzamani:PersianDate:1.1)
@samanzamani
jCenter is currently deprecated and artifacts can only be downloaded till 2022-02-01, consider migrating to jitpack or maven central.
more info here
Hey there,
I just tested this out. Using PersianDate(Long timeInSecond)
when supplied with time in seconds doesn't work properly while supplying time in miliseconds is the right way.
When I try to convert this specific date 2018/12/15 (Year/Month/Day) I get crash saying arrayindexoutofboundsexception
.
Here is an example that I get crash with.
PersianDate pdate = new PersianDate().initGrgDate(2018,12,15);
PersianDateFormat pdformater = new PersianDateFormat("Y/m/d");
String dd = pdformater.format(pdate);
Could you please advise me on this please?
سلام و خسته نباشید!
وقتی تاریخ 12 نوامبر سال 2020 رو به خورشیدی تبدیل میکنم به جای اینکه پنجشنبه 22 آبان 1399 بگیرم برام یکشنبه 8 دی 1398 رو میده.
جهت اطمینان بیشتر به سایت time.ir و چند سایت دیگه رفتم و تاریخ رو تبدیل کردم همش درست بود فقط لایبرری شما غلط جواب میده.
کد من اینه:
lblUploadDate.text = PersianDateFormat("g:i l, j/X/Y").format(
PersianDate(TimeUtils.string2Date(content.upload_date, "DD/MM/YYYY HH:mm:ss"))
)
چون از سرور تاریخ اپلود به فرمت
DD/MM/YY HH:mm:ss
دوباره به کاربر برمیگیرده به خاطر همین توی اپلیکیشن به همون فرمت پارس میکنمش
تابع
string2Date
این رو میده:
12/11/2020 20:29:38
که کاملاً درسته اما در تبدیل تاریخ اشتباه بهم میده
امیدوارم که منظورمو گرفته باشین ببخشین که در گیت هاب فارسی بنویسی همش بی نظم میشه
اگه خاستین به انگلیسی مینویسم
سلام
من موقع استفاده تو اپ متوجه شدم یه سری تاریخ های خاص که انتخاب کردیم رو اشتباه بر می گردونه تو لیستنر.
مثلا 12 بهمن 1398 رو 11 اسفند 1398 برمی گردونه
من زیاد تست نکردم که بفهمم به طور کلی مشکل چیه اما یه سری از این تاریخ ها رو اشتباه محاسبه می کنه
سلام وقت بخیر، ممنون بابت تقویم شما
1408/12/30 را به اشتباه
21 march 2030 نمایش می دهد
که با توجه سایت time.ir اشتباه می باشد
تاریخ های مهم کبیسه :
1408/12/30 == 2030/3/20
1409/1/1 == 2030/3/21
1403/12/30 == 2025/3/20
1404/1/1 == 2025/3/21
1404/12/29 == 2026/3/20
1405/1/1 == 2026/3/21
1407/12/29 == 2029/3/19
1408/1/1 == 2029/3/20
این تاریخ ها با توجه به سایت www.time.ir مب باشد
با تشکر
سلام.وقت شما بخیر.ببخشید من نمیتونم برای تابع addMonth مقدار منفی بدم؟
یعنی می خوام مثلا از ما جاری یه ماه کم کنم بزنم addMonth(-1)
ممنون میشم کمک کنید
سلام و وقت بخیر
چطوری میتونم تاریخ شمسی رو به میلادی تبدیل کنم ؟
PersianDate pdate = new PersianDate().initGrgDate(yearInt,monthInt,datInt);
Log.i("LOG",pdate.toString());
از این فرمت استفاده کردم ولی فقط
initGrgDate
داره ، که برای تبدیل میلادی به شمسی هست
ممنون
This is both a feature request and a question of how to do it .
I want to know how to get the date with Persian numbers
It would be great if you had put a pattern item for parsing am/pm .
Thanks for your great library.
سلام
من دارم با تابع زیر تایم استمپ رو تبدیل میکنم اما برای تمامی تاریخ ها سال 1348 رو میزاره و کلا تبدیلش اشتباه هست
created = 1531642386;
tv_date.setText(new PersianDate((long) created)+"");
خروجی : یکشنبه 28 دی 1348 21:02:15
سلام
من با تابع
addDay
کار می کردم که متوجه شدم درست کار نمی کنه. کد شما رو بررسی کردم رسیدم به تابع
addDate
این تابع سال و ماه و روز و ساعت و دقیقه و ثانیه رو می گیره و با ضرب و تقسیم به تاریخ اضافه می کنه
در صورتی که سال همیشه 365 روز نیست و ماه هم همیشه 30 روز نیست. شما از این اعداد برای ضرب و جمع استفاده کردید.
به نظرم شما باید تاریخ فعلی میلادی رو بدست بیارید. و بعد با توابع خود جاوا تاریخ رو اضافه کنید و بعد از اون تبدیل به شمسی کنید
یه موردی هم که برخوردم تبدیل تاریخ شمسی(سال و ماه و ...) به تاریخ میلادی رو ندیدم
یا شاید هم متوجه نشدم
PersianDate start_date=Date;
PersianDate end_date=Date.addMonth(1);
در مورد بالا به متغیر اول هم یک ماه اضافه میشه جرا؟
Hello and thanks for your useful library. please add a method called getMonthList() or something appropriate to get Jalali month names by order of them.
Thanks again.
hello
in year '1388' from first month to ninth month wrong get days of month;
also #35 problem;
Hi
is there something wrong here:
PersianDateFormat format = new PersianDateFormat();
format.parse("1397-08-31","YYYY-MM-dd")
I'm getting this error:
Method threw 'java.lang.StringIndexOutOfBoundsException' exception. Cannot evaluate saman.zamani.persiandate.PersianDate.toString()
help me please
error when parsing
string date = "1399/09/07";
PersianDate persianDate = persianDateFormat.parse(date,"Y/m/d");
error message
java.lang.ArrayIndexOutOfBoundsException: length=13; index=-1
It would be really great that the PersianDate class has a toString() method.
I guess a proper date format would do the trick, for example:
یکشنبه ۵ دی ۱۳۹۷
Right now I'm extending this class to provide additional functionality of a toString.
Really appreciate your work, greatest hopes be with you.
Best regards, Mohsen
Hi Saman
Suppos current date is end of month, for example 30 Mehr 1399, when I call PersianDate constructor and set date to 1398/12/29 the result date has wrong result
PersianDate persianDate = new PersianDate(); // result is current date, such as 1399/07/30
persianDate.setShYear(1398); // 1398/07/30
persianDate.setShMonth(12); // 1398/12/30 -> 1399/01/01
persianDate.setShDay(29); // 1399/01/29
persianDate.getTime() // 1399/01/29 != 1398/12/29
It seems to need another constructor. (PersianDate(year, month, day))
thanks
سلام وقت بخیر
آیا امکانش هست نسخه جدید رو به زبان کاتلین منتشر کنید؟
زمان تقریبی رو هم بی زحمت میفرمایید
باتشکر
hey thank you for library
but you need to make allow Backup in your manifest file to false . because if i wanted to disable backup in my manifest ,it conflicts with yours. now i have to download your whole repository and import it manually.
peace <3
Hello there,
I wanted to ask if you could add the ability to have custom month names as you know that in Solar Hijri calendar months have different names in different Middle-Eastern regions and countries like in Afghanistan they use 2 different set of names in their 2 national languages of Dari (Farsi) and Pashto (Afghani) or in Kurdish its different.
You can refer to this article for more information:
https://en.wikipedia.org/wiki/Solar_Hijri_calendar#Details_of_the_modern_calendar
Thank you
یک تابع برای بدست آوردن هفته گذشته از سال از روی تاریخ
Date converted to epoch
1360/08/02 > 372780535866 UNIX
But when I try to reverse this specific date using
new PersianDateFormat("Y/m/d").format(new PersianDate(372780535866 ))
it returns 1360/07/01
hi saman,
you have wrong calculation in some dates are more than 50 years past for example you converter give this result: 1311/11/9
for this date: 1933/01/30
but correct result is: 1311/11/10
it cause problem in calculating elderly peoples birthdate
thanx a lot
i need a method to set long value to calendar !! ( using constructor is not good answer in my situation)
خیلی لایبرری خوبی بود ممنون از زحماتتان
وقتی میخواییم یک ماه کم کنیم
pdate.addMonth(-1);
باید استفاده کنیم که کار نمیکنه
ما الان با این روش ماه قبل را دریافت میکنم .
int monthSh = pdate.getShMonth(); if (monthSh == 1) { monthSh = 12; } else { monthSh--; }
الان که همه ی سیستم ها به اینترنت متصل هستند پیشنهاد میکنم ارتباط با ای پی آي های تقویم رو هم در این سورس خوب پیاده سازی کنید
خودم از این سرویس زیاد استفاده میکنم
parsing and formatting in Persian numerals
subtractDate
for the first one, I'm suggesting to add "p" character before String and Pattern Keys i.e, "'pYYYY-pMM-pdd" and "'py pj'". Another easier and lazier approach would be adding the argument usePersianDialect
to parse
and format
functions and just replace Latin numerals to Persians before parsing and after formatting. I could implement this feature, since Kotlin first, i could also convert the project to Kotlin.
the second one is as easy as the implemented adding day/month/year functionality, instead of adding to timeInMilliSecond
we could subtract.
let me know what you think.
Hi developers
I have problem with this code:
PersianDate persianDate = new PersianDate();
persianDate.setShYear(1408);
persianDate.setShMonth(1);
persianDate.setShDay(1);
//some lines of code
new PersianDate(persianDate.getTime());
Upper code throws exception:
Method threw 'java.lang.ArrayIndexOutOfBoundsException' exception.
java.lang.ArrayIndexOutOfBoundsException: length=13; index=-1
I use version 0.8.
thanks
سلام لطفاً این مورد رو چک کنید.
for (int i = 0 ; i < 12 ; i++){ PersianDate persianDate = new PersianDate(); persianDate.setShYear(1399); persianDate.setShMonth(i+1); persianDate.setShDay(1); Log.d("TAG", "month name: "+persianDate.monthName()); }
امروز که 31 شهریور هست ماه مهر رو برنمی گردونه و اشتباهی بعد شهریور آبان رو برمیگردونه!
سلام. برای تبدیل تاریخ شمسی به میلادی
persianDate=new PersianDate(); persianDate.toJalali(yearInt,monthInt,dayInt); Toast.makeText(getApplicationContext(),persianDate+"",Toast.LENGTH_SHORT).show();
از کد بالا استفاده کردم ولی تاریخ امروز رو برمیگردونه
I think this code should work fine but it does not :
PersianDate startPersianDate = new PersianDate();
startPersianDate.setShDay(1);
startPersianDate.setShMonth(11);
startPersianDate.setShYear(1396);
long startDate = startPersianDate.getTime();
but startDate
shows the current date !
Hi
Thanks for the great tool :)
I explicitly set the shYear, shMonth and shDay. and then it is changed by a day!
This is the example unit test:
@Test
fun persianDateTest() {
val persianDate = PersianDate().apply {
shYear = 1368
shMonth = 8
shDay = 1
}
assertEquals(persianDate.shYear, 1368)
assertEquals(persianDate.shMonth, 8)
assertEquals(persianDate.shDay, 1)
}
the date set on persianDate is 30/7/1368
Hello
This code converts "5-dey-1368" (jalali) to (25 December 1989) which is wrong!
The correct is 26 December 1989
Salaam!
For the next release please add an optional parameter to monthName() method to return back names in different Persian dialects (Kurdi, Afghani, Irani).
What I am trying to achieve is:
return PersianDate(TimeUtils.getNowMills()).monthName()
But for now it just returns it in Iranian name (e.g. Aazar).
Thanks a world!
سلام
ممنون از کمکتون
من دوتا تاریخ شمسی دارم که میخوام فاصله بینشون رو به روز بدست بیارم ولی متاسفانه نمیتونم ممنون میشم کمک کنید
مثال
1398/12/18
1398/12/20
== 2 روز
Hi
PersianDate returns the device time and date
Is it the nature of your library or Im making a mistake in using ur library?!
if its normal would you please suggest a way to get the time and date in format 06:22:50 and 1398/05/06
Thanks:)
im running following test:
String Date1 = "1398/05/20";
String Date2 = "1398/07/20";
assertTrue(CurrentDateTime.isInRangeDate(Date1, Date2, "1398/06/1"));
assertTrue(CurrentDateTime.isInRangeDate(Date1, Date2, Date1));
assertTrue(CurrentDateTime.isInRangeDate(Date1, Date2, Date2));
assertFalse(CurrentDateTime.isInRangeDate(Date1, Date2, "1398/04/1"));
assertFalse(CurrentDateTime.isInRangeDate(Date1, Date2, "1398/09/1"));`
public static boolean isInRangeDate(String date1Range, String date2Range, String dateVal) {
PersianDate date1 = stringToPersianDate(date1Range);
PersianDate date2 = stringToPersianDate(date2Range);
PersianDate date = stringToPersianDate(dateVal);
boolean _1 = date.after(date1);
boolean _2 = date.before(date2);
boolean _3 = date.equals(date1);
boolean _4 = date.equals(date2);
return (date.after(date1) && date.before(date2) || date.equals(date1) || date.equals(date2));
}
private static PersianDate stringToPersianDate(String date) {
int day = Integer.parseInt(date.split("/")[2]);
int month = Integer.parseInt(date.split("/")[1]);
int year = Integer.parseInt(date.split("/")[0]);
PersianDate persianDate = new PersianDate();
persianDate.initJalaliDate(year, month, day);
return persianDate;
}
boolean _1 _2 _3 _4 are false in the first test! am i doing the compare wrong or dose this method returns wrong result?
is date.after(date1); ?
is this date "1398/06/1" is after this date "1398/05/20" ? true! so there is something wrong
I need to get or calculate Week Of The Year.
can you add this feature?
below code return wrong result for dates(1400/02/28,1400/02/29,1400/02/30,1400/02/31,1400/04/31,etc) jump to other days seems that this days dose not exist
PersianDate pDate = new PersianDate();
pDate.setGrgYear(1400);
pDate.setGrgMonth(2);
pDate.setGrgDay(28);
pDate.addDay(1);
String finalDate = pDate.getGrgYear()+"/"+pDate.getGrgMonth()+"/"+pDate.getGrgDay();
also in second half of year 1400 some months has 31 days :)
Thanks for your great job, pls fix it as soon as possible. 🙏
In some situations we need to know a year is leap or not only by Year.
PersianDate.IsLeap(Year)
Can you provide that?
i used this code.
PersianDate persianDate = new PersianDate(System.currentTimeMillis());
PersianDateFormat format = new PersianDateFormat("y/m/d-H:i:s");
String time=format.format(persianDate);
but time show me +4:30. how can i correct it?
سلام
چطور ماه قبل و ماه بعد از تاریخ فعلی را به دست بیارم؟
Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve com.github.samanzamani.persiandate:PersianDate:0.2.
Open File
Show Details
Unable to resolve dependency for ':app@debugAndroidTest/compileClasspath': Could not resolve com.github.samanzamani.persiandate:PersianDate:0.2.
Open File
Show Details
Unable to resolve dependency for ':app@debugUnitTest/compileClasspath': Could not resolve com.github.samanzamani.persiandate:PersianDate:0.2.
Open File
Show Details
Unable to resolve dependency for ':app@release/compileClasspath': Could not resolve com.github.samanzamani.persiandate:PersianDate:0.2.
Open File
Show Details
Unable to resolve dependency for ':app@releaseUnitTest/compileClasspath': Could not resolve com.github.samanzamani.persiandate:PersianDate:0.2.
Open File
Show Details
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.