samanzamani / PersianDate

Persian date for android
BSD 3-Clause "New" or "Revised" License
326 stars 40 forks source link

تبدیل به String و برعکس #76

Closed Borderliner closed 1 year ago

Borderliner commented 1 year ago

با سلام و خسته نباشید. میدونم که برای تبدیل تاریخ به متن میشه از PersianDate().toString() استفاده کرد. حالا برعکس اگه بخوایم یه تاریخی که به صورت متن هستش رو ازش یه آبجکت PersianDate بسازیم. مثلا:

val dateString = PersianDate().toString()
val date = PersianDate.fromString(dateString) // برای مثال

این رو نیاز دارم چون باید تاریخ رو توی کلاسی که Parcelable هست استفاده کنم. خیلی ممنون.

samanzamani commented 1 year ago

سلام برای تبدیل تاریخ از string به PersianDate می تونید از کلاس PersianDateFormat و متد parse استفاده کنید. مثال:

String sampleDate1 = '1401-10-10';
String sampleDate2 = '1401-10-13 22:10:15';
PersianDateFormat formater = new PersianDateFormat();
try{
  PersianDate pDate1 = formater.parse(sampleDate1,'yyyy-MM-dd');
  PersianDate pDate2 = formater.parse(sampleDate1,'yyyy-MM-dd HH:mm:ss');
}catch(){}

اطلاعات بیشتر در مستندات وجود داره.

Borderliner commented 1 year ago

اگه pattern اش رو ندونم چی؟ یعنی یه آبجکتی که با initJalali ساختم.

samanzamani commented 1 year ago

اگه قبلا ابجک PersianDate به هر نحوی ساختید و می خوایید ازش string بگیرید بهتره به جای استفاده از متد toString() از ‍PersianDateFormat و متد format استفاده کنید. اینجوری می تونید به هر فرمتی که بخوایید ازش string تولید کنید و اگر نیاز داشتید دوباره با متد parse به PersianDate تبدیلش کنید. مثال:

PersianDate pDate = new Persiandate();
String pDateString = PersianDateFormat.format(pdate,'Y m j');//return 1401 10 16 as a string
PersianDateFormat formater = new PersianDateFormat();
try{
  PersianDate pDate2 = formater.parse(pDateString,'yyyy MM dd');
}catch(){}
Borderliner commented 1 year ago

متوجه شدم خیلی ممنونم. ولی کاش یه راه حل یک خطی هم داشت. من از کاتلین استفاده میکنم، دوست ندارم هربار که آبجکت میسازم دو سه خط کد بنویسم. البته خودم میتونم حلش کنم ولی کاش این قابلیت وجود داشت.