Closed mehdi-amirafshar closed 2 years ago
hi @mehdi-amirafshar Thank you for your report. I will check this method
سلام @mehdi-amirafshar با تشکر از گزارشی که دادید با توجه به نیاز به توضیحات در مورد این مسئله من پاسخ به فارسی می نویسم. وقتی شما از توابع init برای ساخت یک تاریخ استفاده می کنید مثل کد زیر در واقع ساعت و دقیقه و ثانیه صفر خواهد بود که ساعت شروع روز را 00:00:00 در نظر می گیرد.
PersianDate pDate = new PersianDate();
pDate.initGrgDate(2022,4,21);
که تاریخ ۱ اردیبهشت ۱۴۰۱ خواهد بود. وقتی متد subMonth روی این تاریخ اعمال میشود باید در نظر بگیرید که ساعت رسمی کشور در فروردین یک ساعت جا به جا میشود ولی شما با ساعت 00:00:00 تاریخ را ساختهاید پس در واقع با توجه به یک ساعت جابهجایی ساعت شما به روز قبل ساعت 23:00:00 منتقل خواهید شد. پس در واقع شما میتوانید با تنظیم ساعت زمانی که تاریخ را میسازید از این مسئله جلوگیری کنید.
PersianDate pDate = new PersianDate();
pDate.initGrgDate(2022,4,21,1,0,0);
Log.i("PersianDate", pDate.toString());//پنجشنبه 1 اردیبهشت
pDate.subMonth();
Log.i("PersianDate", pDate.toString());//دوشنبه 1 فروردین
این مسئله در واقع مشکل نبوده و به دلیل جابهجایی های ساعت رخ میدهد. باز هم اگر ابهامی بود بگید تا بیشتر توضیح بدم.
Hi, below code has a bug in calculation of previous month in Persian
public PersianDate subMonth(){ return this.subMonths(1); }
when we do subMonth() for this date => ( 2022-04-21 )