Closed mahramane closed 1 year ago
یک نکته دیگه هم اینه که تا ساعت 23 درست کار میکنه وقتی ساعت رو روی 23 به بعد میزاری میره روز بعد.
سلام ممنون از گزارشتون بررسی می کنم
سلام آقای زمانی این مشکل حل شد؟
سلام روز جمعه اپدیت جدید منتشر خواهم کرد.
سلام @mahramane
موردی که گفتید رو من در نسخه 1.5.4
تست می کنم بدون مشکل تبدیل میشه و تاریخ 1402/02/09 23:59:59 برمی گردونه:
PersianDate pDate = new PersianDate().initGrgDate(2023,4,29,23,59,59);
Log.i("LOG",PersianDateFormat.format(pDate,"Y/m/d H:i:s")); //1402/02/09 23:59:59
لطفا کدتو برام بفرست تا بررسی کنم. در ضمن در نظر بگیر که به صورت پیشفرض کتابخانه از تایم زون پیشفرض دستگاه استفاده می کنه که می تونی برای تنظیم روی ایران از این کد استفاده کنی:
PersianDate pDate = new PersianDate().initGrgDate(2023,4,29,23,59,59);
pDate.setLocal(new Locale("fa","IR"));
سلام تایم زون درست است و روی ایران قرار دارد. برای درک بهتر ساده تر توضیح میدم من یک تابع به شکل زیر نوشتم :
fun getSolarDateText(millis: Long): String {
val pDate = PersianDate(millis)
val format = PersianDateFormat("l j F Y")
return format.format(pDate)
}
الان یک تاریخ به شکل میلی ثانیه دارم که هر دوی آنها یک روز است فقط یکی از آنها ساعت 23:59:59 است و یکی ساعت 09:57:48 سپس هر دوی آنها را به تابع بالا ارسال میکنم
1679812068000 => 2023-03-26 09:57:48.000000
1679862599999 => 2023-03-26 23:59:59.999000
میتوانید دو تاریخ بالا را در سایت https://currentmillis.com بررسی کنید و از درستی آنها اطمینان حاصل کنید.
getSolarDateText(1679812068000) //یکشنبه 6 فروردین 1402
getSolarDateText(1679862599999) //دوشنبه 7 فروردین 1402
و اما خروجی به شکل بالا می باشد. احتمالا مشکل از میلی ثانیه کتابخانه باشد.
سلام لطفا اول کتابخانه رو به آخرین ورژن بروزرسانی کن و بعد تست کن. من تاریخی که ذکر کردی تست کردم و نتیجه صحیح بر می گردونه:
PersianDate pdate = new PersianDate(1679812068000L);
PersianDate pdate2 = new PersianDate(1679862599999L);
Log.d("LOG", "First Date to Jalali: " + PersianDateFormat.format(pdate,"Y/m/d H:i:s"));//1402/01/06 09:57:48
Log.d("LOG", "Second Date to Jalali: " + PersianDateFormat.format(pdate2,"Y/m/d H:i:s"));//1402/01/06 23:59:59
در نظر داشته باش برای ساخت شی PersianDate
از timestamp
پارامتر ورودی حتما باید long
باشه.
من با پارامتر j
به جای d
هم تست کردم و توی نمایش مشکلی نداشت.
PersianDate pdate = new PersianDate(1679812068000L);
PersianDate pdate2 = new PersianDate(1679862599999L);
Log.d("LOG", "First Date to Jalali: " + PersianDateFormat.format(pdate,"Y/j/d H:i:s"));//1402/6/06 09:57:48
Log.d("LOG", "Second Date to Jalali: " + PersianDateFormat.format(pdate2,"Y/j/d H:i:s"));//1402/6/06 23:59:59
سلام. خسته نباشید آقای زمانی. خداقوت و ممنون از اینکه پیگیر هستید. ببخشید در اینجا این حرفو زدم پارازیت شد.
خیلی عجیبه 😢 کتابخونه رو بروز کردم و دقیقا کد شمارو اجرا کردم. ممنون بابت پیگیریتون آقای زمانی. من بازم بررسی میکنم ببینم مشکل از چیه 😢
مشکل فقط داخل امیلیتور خود اندروید استدیو اتفاق میفته داخل گوشی خودم مشکلی نداشت فک کنم مشکل از امیلیتور باشه لطف کردید که پیگیر شدید انشالله موفق باشید
بسیار عالی جهت اطمینان می تونید تایم زون رو هم ست کنید.
سلام وقت بخیر من داشتم یک تاریخ برای سال 1402 تنظیم میکردم که به مشکل خوردم تاریخ میلادی 29-04-2023 به شمسی میشه 09-01-1402 و کتابخونه شما درست نشون میده. اما وقتی برای همین تاریخ میلادی ساعت 23:59:59:999 را تعیین میکنم، به شمسی روز بعد رو نشون میده یعنی برای تاریخ میلادی 23:59:59:999 29-04-2023 تاریخ 10-01-1402 شمسی رو نشون میده و یک روز جلوتر میبره. در ضمن این مشکل برای سال 1401 وجود نداشت بلکه در سال 1402 خودشو نشون داد. ممنون میشم بررسی و اصلاح کنید.