در مطالب پیشین سایت، نحوه کار کردن با تاریخ و تقویم در جاوا و نحوه کار کردن با تاریخ و تقویم هجری شمسی (جلالی) را آموزش دادم. در همانجا به دوستان وعده کردم که در آینده نزدیک یک View اندروید برای انتخاب تاریخ هجری شمسی (جلالی) خواهم نوشت و آن را در GitHub منتشر خواهم کرد. در چند روز قبل فرصتی فراهم شد و این View را تکمیل کردم و در GitHub منتشر کردم. امروز می خواهم نحوه استفاده از آن را آموزش دهم تا در صورت نیاز بتوانید از آن استفاده کنید.
نصب و راه اندازی
برای استفاده از این View دو راه دارید:
روش اول:
این پروژه را دانلود کنید و به عنوان یک پروژه کتابخانه ای به پروژه خود اضافه کنید.
برای شروع، یک پروژه اندروید جدید بسازید. بعد از منوی فایل گزینه Import را انتخاب کنید:
در ویزارد نمایش داده شده، گزینه Existing Android Code Into Workspace را انتخاب کنید و Next بزنید:
در مرحله بعد مسیر شاخه ای که پروژه را دانلود کرده اید انتخاب کنید و Finish کنید:
برای اینکه بتوانید در سایر پروژه ها از این کتابخانه استفاده کنید، لازم است مطمئن شوید که این پروژه یک پروژه کتابخانه است. برای این کار بر روی پروژه PersianDatePicker کلیک راست کنید و گزینه Properties را انتخاب کنید:
اگر Is Library تیک نخورده است، آن را تیک بزنید و OK کنید.
حالا بر روی پروژه اصلی خودتان که می خواهید در آن از PersianDatePicker استفاده کنید، کلیک راست کنید و گزینه Properties را انتخاب کنید:
مطابق عکس بالا، دکمه Add را بزنید و از پنجره نمایش داده شده، پروژه PersianDatePicker را انتخاب کنید:
پنجره های باز را OK کنید و برگردید به پروژه خودتان!
در فایل Layout که می خواهید در آن از PersianDatePicker استفاده کنید، باید خط زیر را اضافه کنید:
xmlns:app="http://schemas.android.com/apk/res-auto"
شکل کلی کد شبیه قطعه کد زیر خواهد شد:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > </LinearLayout>
حالا می توانید تگ های مزبوط به PersianDatePicker را به صفحه خود اضافه کنید:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ir.smartlab.persindatepicker.PersianDatePicker android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
اگر این برنامه را اجرا کنید، می توانید PersianDatePicker را ببینید:
روش دوم:
در این روش، اگر می خواهید از پروژه کتابخانه ای -به هر دلیلی- استفاده نکنید، می توانید کدهای PersianDatePicker را به پروژه خود اضافه کرده و به صورت مستقیم از آنها در کد خود استفاده کنید. برای این کار
۱- همه کدهای جاوا را از پوشه src در PersianDatePicker به پوشه src در پروژه خود کپی کنید،
۲- فایل sl_persian_date_picker.xml که در پوشه res/layout قرار دارد را به پوشه متناظر در پروژه خود کپی کنید،
۳- قطعه کد زیر را به فایل attrs.xml پروژه خود که در مسیر res/values قرار دارد اضافه کنید (اگر این فایل وجود ندارد، یک فایل XML اندروید از نوع resources به همین نام ایجاد کنید و این کدها را در میانه تگ resource اضافه کنید):
<declare-styleable name="PersianDatePicker"> <attr name="minYear" format="integer" /> <attr name="maxYear" format="integer" /> <attr name="selectedYear" format="integer" /> <attr name="selectedMonth" format="integer" /> <attr name="selectedDay" format="integer" /> <attr name="displayMonthNames" format="boolean" /> <attr name="yearRange" format="integer" /> </declare-styleable>
حالا به سادگی می توانید از این View در برنامه خود استفاده کنید!
تنظیمات
اگر دقت کنید می بینید که PersianDatePicker تاریخ فعلی را نمایش می دهد. سالها از ۱۰ سال قبل تا ۱۰ سال بعد قابل انتخاب هستند. این رفتار پیش فرض این View است. اما شما می توانید بسیاری از رفتارهای پیش فرض آن را تغییر داده و به شکل مطلوب خود از این View استفاده کنید.
نمایش نام ماه
اگر بخواهید به جای شماره ماه، نام ماه های نمایش داده شود، ویژگی displayMonthNames را true کنید:
<ir.smartlab.persindatepicker.PersianDatePicker android:layout_width="wrap_content" android:layout_height="wrap_content" app:displayMonthNames="true" />
در این صورت PersianDatePicker به شکل زیر نمایش داده خواهد شد:
نمایش یک تاریخ خاص
اگر بخواهید در اولین اجرا، PersianDatePicker به جای نمایش تاریخ فعلی، یک تاریخ خاص را نمایش دهد، می توانید از ویژگی های selectedYear و selectedMonth و selectedDay استفاده کنید:
<ir.smartlab.persindatepicker.PersianDatePicker android:layout_width="wrap_content" android:layout_height="wrap_content" app:selectedYear="1390" app:selectedMonth="5" app:selectedDay="15" />
تعیین محدوده سالها
به صورت پیش فرض محدوده سالها، از ۱۰ سال قبل از سال فعلی تا ۱۰ سال بعد از آن است. اگر بخواهید می توانید این مقدار را با استفاده از ویژگی yearRange تغییر دهید:
<ir.smartlab.persindatepicker.PersianDatePicker android:layout_width="wrap_content" android:layout_height="wrap_content" app:yearRange="15" />
تعیین یک مقدار خاص برای کمترین و بیشترین سال
به جای تعیین محدوده سالهای نمایش داده شده، می توانید با استفاده از ویژگی های minYear و maxYear کمترین و بیشترین مقدار برای سالها را انتخاب کنید:
<ir.smartlab.persindatepicker.PersianDatePicker android:layout_width="wrap_content" android:layout_height="wrap_content" app:maxYear="1450" app:minYear="1350" />
استفاده از PersianDatePicker در جاوا
۱- می توانید برای نمایش یک تاریخ خاص یک شی java.util.Date به PersianDatePicker بدهید:
persianDatePicker.setDisplayDate(new Date());
۲- برای نمایش یک تاریخ خاص می توانید به جای استفاده از java.util.Date از ir.smartlab.persindatepicker.util.PersianCalendar استفاده کنید:
PersianCalendar persianCalendar = new PersianCalendar(); persianCalendar.setPersianDate(1393, 6, 28); persianDatePicker.setDisplayPersianDate(persianCalendar);
۳- هز زمان که خواستید می توانید تاریخی که کاربر انتخاب کرده است را به یکی از دو شکل java.util.Date و ir.smartlab.persindatepicker.util.PersianCalendar بگیرید:
Date d = persianDatePicker.getDisplayDate(); // OR PersianCalendar pCal = persianDatePicker.getDisplayPersianDate();
سالهای کبیسه
PersianDatePicker به کاربر اجازه نمی دهد تا تاریخ اشتباهی انتخاب کند. برای مثال اگر تاریخ فعلی ۳۱ شهریور باشد و کاربر ماه را از شهریور به مهر تغییر دهد، بلافاصله ۳۱ تبدیل به ۳۰ شده و ۳۱ از میان گزینه های انتخاب روز حذف می شود. حالا اگر کاربر همچنان ماه را تغییر دهد تا برسد به اسفند، PersianDatePicker کنترل می کند که اگر سال کبیسه نباشد، مجدداً ۳۰ تبدیل می شود به ۲۹ و ۳۰ از میان گزینه های انتخاب روز حذف می شود. بنابراین کاربر نمی تواند مثلاً ۳۱ اسفند را انتخاب کند!
در آینده ویژگی های بیشتری مثل نمایش به صورت Dialog هم به PersianDatePicker افزوده خواهد شد.
ممنون بابت تلاشتون. مینیمم اس دی کی برای این کتابخونه چیه؟
سپاس از لطف شما
به علت استفاده از NumberPicker در این برنامه، minSdk باید ۱۱ باشه.
سلام مهندس عزیز،بابت زحماتتون بسیار ممنون.
چطور میتونم این پروژه رو دانلود کنم؟
سلام.
هر چند که برنامه نویس اندروید نیستم ولی این کارتون خیلی ارزش داره. ممنون.
سپاسگزارم.
خب انگار منم به اندروید علاقه مند شدم. میشه روش استفادش توی اندروید استودیو رو هم توضیح بدید؟ من دو روش رو امتحان کردم ولی به جایی نرسیدم.
سلام
هنوز فرصت نکردم این لایبرری رو به jcenter اضافه کنم. انشاءالله به زودی!
سلام خسته نباشید و میخواستم بگم ما میخواستیم یه سایت بزنیم بعد نسخه اندرویدش هم میخوایم بزنیم
برای همین میخواستم بدونم چطوری میشه درست کرد اگه مطلب شو بزارین ممنون میشم .
سلام،
در آینده مطالبی درباره انواع فریمورکهای برنامه نویسی وب و هایبرید در اندروید خواهم نوشت.
بسیار عالی
ممنونم
جا داره بابت تلاشتون ازتون تشکر کنم
سلام. من هم از شما تشکر میکنم!
سلام
اول دست مریزاد می گم بهتون و تشکر می کنم بابت زحمتی که کشیدید.
دوم اینکه من تازه کار برنامه نویسی اندروید را شروع کردم و مطابق دستوراتی که فرموده بودید جلو رفتم که با این مشکل برخورد کردم:
Screen Shot 2014-11-05 at 6.13.47 PM.png
اگر براتون زحمتی نبود راهنمایی بفرمایید.
با سپاس
احتمالاْ مشکل در تنظیمات جاوای پروژه شما است. چک کنید ببینید مشکل خاصی در تنظیمات ندارید؟
سلام
خیلی کار عالی ای هستش
بسیار ممنون
اما بنده هم دقیقا همین مشکل آقای “توحید” رو دارم.
ممنون میشم بررسی کنید
مشکلی هم در تنظیمات جاوا ندارم.اگر ممکنه بفرماییید تنظیمات جاوا چطور باید باشه
ممنون
سلام
سپاس بابت محبت شما.
عکسی که آقا توحید فرستادن، پکیج java.util برای برنامه نامشخصه. به هر حال بررسی میکنم ببینم مشکل از کجاست.
با عرض سلام و خسته نباشید
میخواستم بدونم امکان این که بشه از این کامپوننت به صورت spinner استفاده کرد هست
ممنون
سلام
در آپدیت بعدی skin براش تعریف میکنم که بشه کامپوننت رو به صورت spinner و dialog هم باز کرد.
سپاسگزارم
سلام تشکر از آموزشی که گذاشتین
از برنامه PersianDatePicker بعنوان کتابخانه برای برنامم استفاده کردم. اما وقتی می خوام در یکی از فایل های xml از DatePicker استفاده کنم با خطا مواجه میشم:
eclipse.buildId=4.3.2.M20140221-1700
java.version=1.7.0-ea
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_US
Framework arguments: -product org.eclipse.epp.package.java.product
Command-line arguments: -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.java.product
Error
Sun Dec 14 09:25:38 PST 2014
Failed to load properties file for project ‘PersinDatePicker’
از این کد در xml طبق آموزش استفاده کردم:
سلام تارا
اینطور که از خط آخر خطایی که فرستادی فهمیده میشه احتمالاً یکی از این دو مشکل برات رخ داده:
۱- کد برنامه رو به پروژه خودت اضافه کردی و یادت رفته فایل attrs.xml رو آپدیت کنی،
۲- کد این کامپوننت رو به عنوان یک کتابخانه به پروژه خودت اضافه کردی ولی یادت رفته این خط رو به اول xml اضافه کنی:
xmlns:persianDatePicker=”http://schemas.android.com/apk/res-auto”
چک کن و نتیجه رو اطلاع بده.
سلام، ممنون که این View رو نوشتین، خیلی کاربردیه. من می خوام از این View توی Android Studio استفاده کنم ولی متاسفانه زمانی که بعد از import کردن library می خواد build رو انجام بده این error رو بهم می ده:
Error: Configuration with name ‘default’ not found
مشکل چیه؟
سلام و سپاس. من هنوز توی اندروید استودیو تستش نکردم متأسفانه. به زودی تست میکنم ببینم مشکل از کجا است.
سلام
ممنون استاد
من تو layout و جایی که می خوام نشون بدم قبلا یک xmlns تعریف شده و اینجوری می شه دو تا می خطا می دهد
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:persianDatePicker=”http://schemas.android.com/apk/res-auto”
اگر هم نزارم بازم خطا می ده !
تعداد xmlns ها در فایل xml مشکلی ایجاد نمیکنه. باید ببینید خطای اصلی کجا است.
بله مشکل از چیدمان xml بود چون در یک fragment استفاده کردم
فقط الان یک مشکل دیگه هم دارم و اون گرفتن مقدار انتخابی کاربر است که موقع اجرا برنامه خطا میدهد و pCal را نمی شناسد
import ir.smartlab.persindatepicker.PersianDatePicker;
import ir.smartlab.persindatepicker.util.PersianCalendar;
public class HomeFragment extends Fragment {
private View btnCheckFalAction;
private PersianDatePicker persianDatePicker;
public HomeFragment(){}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_home, container, false);
btnCheckFalAction = (Button) rootView.findViewById(R.id.btnCheckFal); // you have to use rootview object..
PersianCalendar pCal = persianDatePicker.getDisplayPersianDate();
btnCheckFalAction.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
Toast.makeText(getActivity(), “Date is : ” + pCal , Toast.LENGTH_LONG).show();
}
});
return rootView;
}
}
سلام
اول باید PersianDatePicker رو هم مثل بقیه View ها با اسافاده از findViewById مقداردهی کنید:
PersianDatePicker pdp = rootView.findViewById(R.id.someId)
PersianCalendar pCal = pdp.getDisplayPersianDate();
موفق باشید
سلام من کد زیر برای گرفتن تاریخ از کادر دیالوگ ونمایش در اکتیویتی نوشتم
TextView txt= (TextView) getActivity().findViewById(R.id.date);
PersianDatePicker pdp = (PersianDatePicker) getDialog().findViewById(R.id.datepicker);
PersianCalendar data1 = pdp.getDisplayPersianDate()
txt.setText(data1.toString());
که خروجی زیر میده
ir.smartlab.persiandatepicker.util…
سلام
من این پروژرو ایمپورت کردم ولی با خطا مواجه شدم!
GetTimeZone” error mide”
با سلام
من وقتی میخوام تو کد xml توی تگ datepicker از این دستور ها استفاده کنم ارور می ده
app:yearRange
یا
app:selectedYear=”1390″
app:selectedMonth=”5″
app:selectedDay=”15″
یا
app:maxYear=”1450″
app:minYear=”1350″
میشه راهنمایی کنید چی کار کنم .
تمام کارهایی که در روش دوم گفتین را انجام دادم.
الان میخوام بگم که رنجش بیشتر از ۱۰ سال باشه ولی متاسفانه تو فایل طئم همچین ارورری میده :
Error parsng xml:unbound prefix
لطفا اگه میشه کمک کنید.
این خط رو به اولین تگ XML اضافه کنید:
xmlns:app=”http://schemas.android.com/apk/res-auto”
سلام. من از پروژه ی شما استفاده کردم. ممنون ولی یه مشکلی داره . از ساعت ۱۲ شب تا ۳:۳۰ دقیقه صبح تاریخ یک روز قبل رو نشون میده ولی روز هفته رو درست نشون میده. (و بعد از ساعت ۳:۳۰ همه چیز دو درست نشون میده.) اگه ممکنه کمک کنید.
سلام.
علت اینه که Timezone دستگاه شما «تهران» نیست و افق ایران با گربنویچ ۳٫۵ ساعت اختلاف داره. یا در برنامه Locale خود را تنظیم کنید یا گوشی خود را تنظیم کنید.
اگه می شه راجع به locale بیشتر توضیح بدید. ممنون.
هر زبان و هر کشور قوانین خودشون رو برای نمایش تاریخ، واحدهای پول، اختلاف زمانی، تغییر ساعت و غیره دارن که در اصطلاح جاوا به اونا locale گفته می شه.
درسته که گوشی شما روی locale ایرانه ولی باید به برنامه صریحا گفته بشه که از چه locale ی استفاده کنه.
من ایرانم و timezone روی دستگاه من ایرانه ولی این مشکل همچنان وجود داره. و من نتونستم حلش کنم.
برای این که برنامه از locale تنظیم شده در دستگاه استفاده کنه، به شیوه زیر عمل کنید:
PersianCalendar persianCalendar = new PersianCalendar();
persianCalendar.setTimeZone(TimeZone.getDefault());
سلام دوست عزیز. ممنون بابت نوشتن این کلاس تاریخ. من تو اندروید دو تا مشکل داره تو نسخه های بالا وقتی که تمام مراحلی که گفتید رو میرم خطای زیر رو میده:
۰۳-۰۸ ۱۵:۱۴:۰۲٫۱۰۱: E/AndroidRuntime(22650): FATAL EXCEPTION: main
۰۳-۰۸ ۱۵:۱۴:۰۲٫۱۰۱: E/AndroidRuntime(22650): android.view.InflateException: Binary XML file line #70: Error inflating class ir.smartlab.persindatepicker.PersianDatePicker
برای اندرویدهای ۲.۲ انگار جواب نمیده متاسفانه
سلام
به علت استفاده از NumberPicker در این کتابخانه، نمیتوان از آن در برنامههای با minSdkVersion کمتر از ۱۱ (اندروید ۳) استفاده کرد.
با سلام و با تشکر از شما
احتراما به نظر میرسد
محدودیت ها در اندروید
۵٫۰٫۲
اعمال نمی شوند
app:maxYear
app:minYear
سلام.
متشکرم. بررسی میکنم.
با سلام خدمت شما آقای بهزادیان نژاد.
نخست متشکرم از شما به خاطر آموزش های خوب شما.
وقتی این پروژه را import کردم در فایل TimeZone.java روی import java.util.TimeZone خطا می گیره. باید چکار کرد؟
سلام.لطفا دقیق تر بگویید چه خطایی رخ می دهد.
من معمولا نظر نمیدم توی سایتا.
اما واقعا وقتی انقدر به کارم اومد، گفتم نامردیه یه تشکر ازتون نکنم.
تشکر…
سلام آقای بهزادیان نژاد
من همونطور که آموزش دادید مراحل رو انجام دادم اما موقع اجرای برنامه این خطا رو میده که کلاس پیدا نشد
۰۴-۰۷ ۰۴:۱۹:۳۸٫۱۱۰: E/AndroidRuntime(2588): Caused by: java.lang.ClassNotFoundException: ir.smartlab.persindatepicker.PersianDatePicker
۰۴-۰۷ ۰۴:۱۹:۳۸٫۱۱۰: E/AndroidRuntime(2588): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
پروژه رو به عنوان Library هم انتخاب کردم اما نمیدونم مشکل از کجاست ، امکانش هست یه راهنمایی بفرمایید از صبح درگیرشم نفهمدیم باید چی کار کرد
پیشاپیش ممنونم
عذر می خوام من همزمان یک Library دیگه رو هم دانلود کرده بودم اونو با کد شما اشتباه گرفتم ، اما حالا که کپی کردم فایلهای جاوا رو ( طبق مرحله دوم ) کلاس PersianDatePicker.java ، آی دی ها رو نمیشناسه و به همه ی اونها میگه r can not be resolved to a variable
یکی دو بارهم پاک کردم و دوباره کپی کردم اما برطرف نشد
agha dameetoooon garm,karamoo rah andakht b khoobi 😉
salam mishe begin cheejoori mitonam khoroji ro ba formate yyyy/mm/dd begiiram??????
ya age k mishe ba hamin format yyyy/mm/dd vali shamsi bashe k che behtar ,az code zir estefade kardam ama naashood 🙁
String dd=mydate.getDisplayDate().toString();
text.setText(new SimpleDateFormat(“yyyy-MM-dd”).format(dd));
عالی بود
مرسی
اما چرا نمیشه سمت راست صفحه قرارش داد؟
سلام
یه مشکلی پیش اومده برای من ممنون میشم راهنمایی کنید.
من این date picker شما رو توی یک دیالوگ نمایش میدم و توی اون دیالوگ یه دکمه ی ok گذاشتم. که با زدن اون دکمه مقدار getDisplayPersianDate رو به یه EditText میدم. کد زیر :
btnChangeDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// custom dialog
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.date_dialog);
dialog.setTitle(“date picker…”);
Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK);
dialogButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PersianCalendar d = persianDatePicker.getDisplayPersianDate();
editTextDate.setText(d.getPersianShortDate());
dialog.dismiss();
}
});
dialog.show();
}
});
مشکلم اینجاست که همواره مقدار تاریخ جاری رو بهم برمیگردونه ! ینی هر چقدر من عوض میکنم هیچ اتفاقی نمیوفته.
اما متد شما میگه getDisplayPersianDate !!
ینی تاریخی که داری نمایش میدی رو برگردون. !!! نه تاریخ جاری رو !!
ممنون میشم راهنمایی کنید.
سلام. یه issue تو github باز کنید تا بررسی کنم.
منم دقیقا همین مشکل رو دارم توی دیالوگ فقط تایم جاری رو میده بهم
سلام، با تشکر از کتابخانه خوبتون میخواستم بدونم برای اینکه بشه روز را تعیین کرد آیا تابعی داره این کتابخانه؟
مثلا تاریخ که انتخاب شد بتونیم بگیم که چه روزی هست، شنبه، یکشنبه ؟
ممنون از توجهتون
سلام
بعد از گرفتن شی persianCalendar میتونید از تابع getPersianWeekDayName استفاده کنید.
سلام.خسته نباشید
اردیبهشت رو اردی بهشت می نویسه
u06cc مال ی هستش
u0627 مال ب هستش
برای ب دو طرف چسبان چه کدی بنویسم
یا معادل این کد ها را کجا پیدا کنم ممنون
سلام
اردیبهشت به بونیکد این میشه:
۰۶۲۷ ۰۶۳۱ ۰۶۲F 06CC 0628 0647 0634 062A
اتصال حروف توسط خود کتابخانههای نمایش متن (در اندروید کتابخانه Skia) انجام میشه و شما لازم نیست کار خاصی بکنید.
سلام
کار بسیار قشنگی کردین. خیلی عالیه
چه جوری می تونم با کد تاریخ تقویم رو تنظیم کنم به تاریخ امروز؟
می خوام با زدن یه دکمه تاریخ در حال نمایش تقویم تنظیم بشه به تاریخ امروز(تاریخ گوشی)
تاریخ به صورت پیشفرض روی تاریخ روز جاری است.
عالی بود جناب بهزادیان نژاد
فوق العاده کاربردی و با ارزش
برای من که خیلی خوب بود
بی نهایت سپاسگزارم 🙂
سپاسگزارم.
واقعا عالیه ازتون خیلی ممنونم
سپاسگزارم.
سلام می خواستم بدونم از این کتابخنه چطور تو اندروید استادیو استفاده کنم و آیا باید به gradle.build چیزی اضافه کنم
با تشکر
سلام. این کتابخانه را هنوز به jcenter اضافه نکردم بنابراین نمیتوانید از امکانات gradleاستفاده کنید. فقط باید سورس کد برنامه را به پروژه خودتان اضافه کنید.
سلام
شما باید ابتدا این کتابخانه را از آدرس گیت هاب که جناب بهزادیان داده اند به صورت یک زیپ فایل دانلود کنید و اکسترکت کنید که هر دو بهتر است در دسکتاپ باشد سپس با استفاده از مسیر file–>new–>import module و آدرس دهی و finish کردن کتابخانه را به صورت ماژول به پروژه اضافه کنید و سپس باید با استفاده از مسیر prfoject structureانتخاب گزینه app (اگر انتخاب نشده بود در پنجره باز شده) –>انتخاب سربرگ dependencies –> کلیک روی علامت + ستون سمت راست –> انتخاب گزینه Module dependency –> انتخاب نام کتابخانه تون و OK کردن کتابخانه را آماده استفاده کنی و پس از آن باید در فایل XML قسمت سربرگ Text نام دیت پیکر را به جای DatePicker اینگونه وارد کنی : ir.smartlab.persiandatepicker.PersianDatePicker
اکنون این دیت پیکر شمسی با Run کردن پروژه در اکتیویتی مورد نظر به نمایش در می آید.
سلام
مهندس ۴ ساعته دارم با این خطا سر و کله میزنم اما متاسفانه نتیجه ای نگرفتم
The following classes could not be instantiated:
– ir.smartlab.persindatepicker.PersianDatePicker (Open Class, Show Error Log)
See the Error Log (Window > Show View) for more details.
Tip: Use View.isInEditMode() in your custom views to skip code when shown in Eclipse
لطفا راهنمایی بفرمایید
سلام دوست عزیز
منم بینهایت از لطف شما ممنونم
واقعا زحمت کشیدید
فقط دوست عزیز منم مشکل آقا Arash رو دارم یعنی وقتی می خوام توی Dialog ازش استفاده کنم فقط تاریخ جاری رو برمی گردونه و تاریخ تغییر یافته رو نمایش نمیده
علت چی میتونه باشه؟
با تشکر
سلام خسته نباشید ،
ببخشید میخواستم بپرسم چرا ویژگی minYear و maxYear برای من کار نمیکنه ؟ من از Eclipse استفاده میکنم .
سلام استاد
من لینک (روش)دانلود PersianDatePicker رو تویGitHub پیدا نکردم
لطفا فایل PersianDatePicker به ایمیلم ارسال کنید
پیشاپیش ممنون.
سلام. میشه لطفا آموزش بدین چطوری میتونیم در Android Studio اضافه ش کنیم و ازش استفاده کنیم.
ممنون
سلام دوست عزیز
ممنون از زحمتی که کشیدین….
فقط من از inetlij idea استفاده میکنم میشه بنده رو راهنمایی کنید تا چطور از این لایبرری استفاده کنم
و آیا میتونم این رو با custom dialog هم استفاده کنم
خروجی getDisplayPersianDate به شکل زیره: (ممنون میشم اصلاحش کنید)
at.andreasrohner.spartantimelapserec.persindatepicker.util.PersianCalendar[time=1312653074599,areFieldsSet=true,lenient=true,zone=GMT,firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2011,MONTH=7,WEEK_OF_YEAR=32,WEEK_OF_MONTH=1,DAY_OF_MONTH=6,DAY_OF_YEAR=218,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=5,HOUR_OF_DAY=17,MINUTE=51,SECOND=14,MILLISECOND=599,ZONE_OFFSET=0,DST_OFFSET=0,PersianDate=1390/05/15]
سلام،
من از datepicker شما استفاده کردم تو پروژه ام ولی وقتی ساعت از ۱۲ شب میگذره تاریخ روز قبل رو نشون میده.یعنی timezone باید ست باشه تا سر ساعت ۱۲شب تاریخ عوض بشه. من کد زیر رو تغییر دادم ولی بازم تغییری ایجاد نشد.
این کد در پکیج ir.smartlab.persindatepicker.util در کلاس PersianCalendar هستش که من تغییرش دادم.
سلام دوست عزیز … کار قشنگی انجام دادی … من از این کنترل استفاده کردم و بخوبی جواب داد منتها به یک مشکل برخوردم :
زمانی که این کنترل در یک لی اوت مستقل قرار داره به راحتی کار میکنه … مشکل من زمانی شروع شد که تو یک دیالوگ باکس اختصاصی قرارش دادم ( Custom Dialog ) … در این دیالوگ یک دکمه اکی گذاشتم . در لیسنر مربوط به دکمه اکی یک متغیر از نوع PersianCalendar رو برابر با مقدار Datepicker قرار دادم … زمانی که دکمه اکی رو میزنم برنامه کرش میکنه (nullpoint exception ) . خوشحال میشم مشکل منو حل کنی. با تشکر
با سلام.
یه مشکلی که این ابزار دهره اینه که نمیشه تاریخ های ۳۰و ۳۱ ام ماه رو انتخاب کرد و در صورت انتخاب این روزها تاریخ خودبخود روی ۲۹ ام آن ماه ثبت میشود
در فایل PersianDatePicker.java تابع setDisplayPersianDate بصورت ذیل نوشته شده:
public void setDisplayPersianDate(PersianCalendar displayPersianDate) {
int year = displayPersianDate.getPersianYear();
int month = displayPersianDate.getPersianMonth();
int day = displayPersianDate.getPersianDay();
if (month > 6 && month 29) {
day = 29;
}
}
dayNumberPicker.setValue(day);
minYear = year – yearRange;
maxYear = year + yearRange;
yearNumberPicker.setMinValue(minYear);
yearNumberPicker.setMaxValue(maxYear);
yearNumberPicker.setValue(year);
monthNumberPicker.setValue(month);
dayNumberPicker.setValue(day);
}
دستورات if را بدین صورت تغییر دهید:
if (month > 6 && month 29) {
day = 29;
}
دستورات if را بدین صورت تغییر دهید
if (month > 6 && month 29) {
day = 29;
}
if (month > 6 && month 29) {
day = 29;
}
}
سلام خیلی قدردانی میکنم از شما بابت همچین ویوی خوب و پرکاربردی ولی مشکلی هست
از هرکدوم ازین روشهایی که گفتید جلو رفتم ، خطایی ندارم ولی اصلا این ویو نمیاد که بنویسمش حتی کپی میکنم ازینجا کدهای xml رو بازم ناشناس میمونه و خطای زیر رو میده
The following classes could not be instantiated:
– ir.smartlab.persindatepicker.PersianDatePicker (Open Class, Show Error Log)
به صورت لابراری وارد میکنم همین مشکل کماکان هست ولی به صورت دستی فایلای جاوا رو میزارم تو پروژه یبار میبندم و دوباره باز میکنم اکلیپس رو درست شد
با تشکر
خیلی ازتون ممنونم واقعا کمک کردین
گرچه برای اوردنش تو استودیو خیلی سختی کشیدم تا یادبگیرم ولی از صمیم قلبم ممنونم
من وقتی خط app:displayMonthNames=”true” رو اضافه می کنم، Error parsing XML Unbound prefix میده.
سلام.
مشکل از اینجا بود که من در قسمتی از مطلب prefix رو persianDatePicker تعریف کرده بود و در قسمتهای دیگه app.
الان مطلب رو ویرایش کردم.
در فایل xml خودتان xmlns زیر را اضافه کنید:
xmlns:app=”http://schemas.android.com/apk/res-auto
مثل نمونه معرفی شده در مطلب. حالا میتوانید به ویژگیهای تعریف شده برای PersianDatePicker با استفاده از پیشوند app دسترسی داشته باشید.
سلام
خیلی ممنون که این پرژوه را برای عموم قرار دادید .
چطور میشه تاریخ گرفته شده از کاربر را به میلی ثانیه تبدیل کرد ؟این امکان هست ؟
با سلام من نتونستم پروژه رو دانلود کنم اگه لینک دانلودش برام بذارین ممنون میشم چون خیلی بهش نیاز دارم
دانلود از GitHub بسیار ساده است. کافی است دکمه Download Zip را بزنید. با این حال لینک دانلود:
دانلود
سلام. وقت ب خیر.
لطفا” فایل jar. رو هم قرار بدین تا راحت به اندروید استودیو اضافش کنیم.
سلام. این کتابخانه به علت داشتن res های اندرویدی قابل تبدیل به jar نیست.
بسیاااااااااااااااااااااااااااااااااااااااااااااااااااار چرت و سطح پایین واقعا وقتمو گرفت
سلام خسته نباشید.
چجوری میتوان به یه datepicker جاوا تبدل کرد با سورس کد شما؟
سلام. PersianDatePicker با استفاده از کامپوننتهای اندروید نوشته شده و قابل استفاده در جاوا نیست. فقط از PersianCalendar برای تبدیل تاریخ میلادی به شمسی میتوان استفاده کرد.
سلام
ممنون از لایبراری خوبتون
یه مشکلی هست . چرا همیشه تاریخ همون روز رو نشون میده ؟ تاریخی که کاربر انتخاب کرده رو نمیده. مشکل از چیه ؟
با تشکر
سلام
ضمن تشکر از کار قشنگتون
من توی eclipse اجراش کردم با API 15 ولی نمیدونم چه جوری تو کد نویسی اندروید توی eclipse مقدار انتخابی کاربر رو بدست بیارم
سلام
ضمن تشکر از کار قشنگتون
من می خوام از توی برنامه اندرویدی با API 15 تو eclipse ازش استفاده کنم
میخواستم روشی که بتونم تاریخ انتخابی کاربر رو بدست بیارم رو بهم بگید
با تشکر
سلام جناب بهزادیان نژاد
کارتون واقعا ریباست. من از این view تو پروژم استفاده کردم و فوق العادست.
هم تو اکتیویتی ها خوب کار می کنه و هم تو دیالوگ ها.
جناب بهزادیان نژاد من تو برنامم به یه calenderView شمسی احتیاج دارم اما متاسفانه کلندر ویو خود ایکلیپس میلادیه و تو اینترنت هم هرچی سرچ می کنم چیزی پیدا نمی کنم.
آیا جایی برای دانلود هست؟
یا اگه نیست خودم چه جوری می تونم درست کنم؟ مثل همین datePicker که شما درست کردین منم یه کلندر شمسی درست کنم و هم خودم استفاده کنم هم سایر عزیزان اندروید کار. از کجا شروع کنم؟ مراحلش چه جوریه؟
اگه میشه لطفا جواب رو برام ایمیل هم بفرستین. تشکر از توجهتون و زحمتی که متحمل شدین
سلام وقت بخیر
ممنون از آزمایش خوبتون
خیلی عالی بود
متاسفانه بنده نتونستم در دیالوگ استفاده کنم
بنده به یک date picker dialog فارسی نیاز دارم که با کلیک روی button باز بشه و نتیجه در تکست ویو نمایش داده بشه
ممنون میشم کمک کنید
سلام , کار بسیار قشنگ و پرکاربردی انجام دادید ممنون.
فقط یک مشکلی توش پیدا کردم و اینه که موقع گرفتن تاریخ وارد شده برای ماه های ۳۱ روزه , آخرین روز ها یعنی ۳۰ ام و ۳۱ رو همواره ۲۹ ام ذخیره میکنه.
سلام، لطفا به سوالم پاسخ بدید. چجوری میتون در هنگام تغییر تاریخ persiandatepicker یک متود رو اجرا کنم؟ یعنی یه چیزی مثل OnValueChangeListener احتیاج دارم که از خارج از کلاس خود PersianDatePicker برام قابل دسترسی باشه
داش مرسی
سلام
مرسی اقای مهندس
من رو اندروید استودیو تست کردم/ عالیه و مشکلی نداره /
در ضمن برای تاریخ که اقای “محمد” میگن برای من درست کار میکنه و مشکلی نداره/
دمتون گرم!
سلام با تشکر از شما
یه سوال داشتم چه طوری فونت اعداد را در این کتابخانه فارسی کنم؟؟؟
سلام. خسته نباشید.
ممنون بابت کتابخونه ای که نوشتید.
چجوری میتونم تاریخی رو که خود کاربر انتخاب کرده رو ازش بگیرم و نشون بدم.
اینجوری فقط میتونم تاریخ همون روز رو بگیرم ازش.
سلام مشکل اینکه فقط تاریخ جاری را بر می گرداند حل نشد یا کسی راهکاری نداره .
من راهکار دادم کامنت های منو چک کنید
واقعا چرا فقط تاریخ جاری رو برمیگردونه؟؟؟ اینحوری که اصلا datePickerنیست فقط تاریخ جاریو گرفتینو نشون دادین واقعا مسخرست
باعرض پوزش از کامنت قبلیم 😀
من کلاس Persian date picker رو بررسی کردم و خوندم و متوجه شدم برای اینکه تاریخ انتخابی رو نشون بده باید لیستنر onDateChageListener رو صدا بزنیم یا به اکتیویتی یا فرگمنتمون implements کنیم و مقدارای جدید و بگیریم .
ولی با این حال شما تو اموزشتون این نکته رو اشتباه گفته بودین اینم حرف شما
۳- هز زمان که خواستید می توانید تاریخی که کاربر انتخاب کرده است را به یکی از دو شکل java.util.Date و ir.smartlab.persindatepicker.util.PersianCalendar بگیرید:
Date d = persianDatePicker.getDisplayDate();
// OR
PersianCalendar pCal = persianDatePicker.getDisplayPersianDate();
در صورتی که اشتباه گفتین .تشکر میکنم بابت انتشار این دیت پیکر
سلام
اره این مشکل داره
میشه بگی دقیقا چیکار کردی تا بشه تاریخ نمایش داده رو گرفت؟
ممنون میشم
تو متن توضیح دادم:
Date d = persianDatePicker.getDisplayDate();
// OR
PersianCalendar pCal = persianDatePicker.getDisplayPersianDate();
ممنون
کارتون کارمو راه انداخت …تشکر
سلام جناب آقای علی بهزادیان نژاد فقط خواستم از زحمات شما کمال تشکر را داشته باشم
سلام.
بابت کاری که انجام دادین واقعا ممنون و خسته نباشید.
فقط یه مشکلی، با وجود اینکه توی اپلیکیشن timezone رو تنظیم میکنم باز هم تا ساعت ۴:۳۰ تاریخ تغییر نمیکنه ولی روز هفته تغییر میکنه.
چک کردم timezone هم درست بود.
ممنون میشم کمک کنین.
سلام آقای بهزادیان
من PersianDatePicker را به عنوان لایبری به پروژه ام اضافه کردم.حالا باید چه جور ازش استفاده کنم؟برای اینکه نمایش پیدا کنه از چه کدی استفاده کنم؟
درود
نخست بابت کار زیبایی که کردید بهتون تبریک میگم
من در android-studioیک ویو از کار شما ساختم
و تاریخ روز رو نشون میده.
تا اینجاش مشکلی ندارم
اما من میخوام که تاریخ خاصی نشون بدم .الان وقتی ویو رو میبینم تاریخ روز نشون میده
وقتی طبق فرمایش شما اینگونه عمل میکنم :
PersianCalendar persianCalendar = new PersianCalendar();
persianCalendar.setPersianDate(1394, 4, 5);
persianDatePicker.setDisplayPersianDate(persianCalendar);
بعد توسط
Toast.makeText(getApplicationContext(), “” +persianDatePicker.getDisplayDate()+ “: ” + persianCalendar.getPersianLongDateAndTime() , Toast.LENGTH_SHORT).show();
تاریخ رو نشون میدم
که میلادی توسط persianDatePiicker.getDisplayDate()و شمسی رو توسط persianCalendar.getPersianLongDateAndTime() نمایش میده
ولی توی ویو PersianDatePicker کماکان تاریخ روز رو نشون میده و نه تاریخ ۱۳۹۴/۴/۵
همینطوری سوالی داشتم
من میخواستم تاریخ رو شمسی رو به صورت میلادی پاس بدم به دیتابیس و یک query اجرا کنم.
در datePickerخود اندروید بدین صورت عمل میکنم
Calendar startCalendar = Calendar.getInstance();
int sDay = datePicker.getDayOfMonth();
int sMonth = datePicker.getMonth();
int sYear = datePicker.getYear();
startCalendar.set(Calendar.YEAR, sYear);
startCalendar.set(Calendar.MONTH, sMonth);
startCalendar.set(Calendar.DAY_OF_MONTH, sDay);
startCalendar.set(Calendar.HOUR, 0);
startCalendar.set(Calendar.MINUTE, 0);
startCalendar.set(Calendar.SECOND, 0);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(“yyyy-MM-dd”);
setStartDate(simpleDateFormat.format(startCalendar.getTime()));
ولی در اینجا من توابع set در ویو اعمال نمیشوند و وقتی toast اجرا میشه تاریخ روز رو نشون میده کماکان
مشکل من اینه که نمیتونم تاریخی که کاربر ست میکنه رو به فرمت میلادی بگیرم و برگردونم
درواقع نه ست میشه و نه خونده میشه
وقتی تاریخ روز رو عوض میکنم و دوباره Toast اجرا میشه تاریخ روز نشون میده
فقط وقتی تو خود برنامه perisianCalender دستی ست میکنم تاریخ رو درست نشون میده
مچکرم راه نمایی کنید
سلام
کامپوننت خیلی خوبی ایجاد کردین ممنونم ازتون
میخواستم ببینم امکان نمایش ساعت هم وجود داره تو این کامپوننت یا نه؟
من نیاز دارم که ساعت رو با محدوویت خاصی نمایش بدم
ممنون میشم اگه راهنماییم کنید
در آینده ویژگی های بیشتری مثل نمایش به صورت Dialog هم به PersianDatePicker افزوده خواهد شد.
این آینده هنوز نرسیده؟
سلام
ممنون از زحمتی که کشیدین.
میخواستم بدونم چجوری میشه تاریخی رو که کاربر انتخاب میکنه (به شمسی) به صورت معادل میلادی هم دریافت کرد.
من میخوام برای آلارم ازش استفاده کنم و برای همین باید معادل میلادی اون رو بدونم تا بتونم تاریخ رو ست کنم.
ممنون میشم راهنمایی کنید
بخش «استفاده از PersianDatePicker در جاوا» در متن رو با دقت بخونید. جوابتون اونجا هست.
سلام و سپاس فراوان بابت کار با ارزشتون
من از کتابخانه شما در پروژه ام استفاده کردم ولی الان احتیاج دارم که تاریخ انتخاب شده توسط کاربر رو به میلادی تبدیل کنم. لطفا منو راهنمایی کنید.
با تشکر
بخش «استفاده از PersianDatePicker در جاوا» در متن رو با دقت بخونید. جوابتون اونجا هست.
با نوشتن کد زیر تاریخ و ساعت رو بصورت میلادی نشون میده ولی من فقط تاریخ رو احتیاچ دارم.
txtdate.setText(pdp.getDisplayDate().toString());
چرا اجازه استفاده از getdate رو به من نمیده؟ txtdate.setText(pdp.getDisplayDate().getDate());
یعنی با نوشتن کد بالا روی getdate یه خط مشکیه
لطفا منو راهنمایی کنید. ممنون
برای نمایش تاریخ به فرمتی که میخواهید از SimpleDateFormat استفاده کنید. برای آشنایی اینجا را بخوانید:
http://www.tutorialspoint.com/java/java_date_time.htm
سلام
این View خیلی عالیه
من با دوستم یک پروژه درسی داریم و میخوایم از این View داخلش استفاده کنیم ولی نمیدونیم چجوری تو جاوا اینو بذاریم
ما داریم با نت بینز کار میکنیم و داخل یک فرم برای ثبت مشتری جدید باید تاریخ ثبت بذاریم و اگر بشه میخوایم از این View که حالت گرافیکی قشنگی هم داره اونجا استفاده کنیم
میتونین راهنماییمون کنین ؟
این ویو بر اساس NumberPicker اندروید طراحی شده و بنابراین نمی تونید مستقیما ازش در جاوا استفاده کنید. می تونید با الهام از این کد و با استفاده از JSpinner در جاوا کار مشابهی انجام بدید.
با سلام و ارزوی قبولی طاعات
حناب اقای بهزادیان بخاطر این اموزش از شما سپاسگزارم.
من به دنبال روشی هستم که بتوانم فقط روز و ماه را از کاربر دریافت کنم. ایا امکانش وجود دارد که کدهای مربوط به سال را حذف کنم و فقط از روز و ماه استفاده کنم؟
و نهایتا بعد از گرفتن انها روز سپری شده از سال را محاسبه کنم. ایا چنین چیزی امکام پذیر است؟
ممنوم از راهنمایی بزرگوارانه تان
سلام.
به سادگی می تونید بخش سال رو از layout و کد حذف کنید.
ممنونم از پاسختان. ببخشید اقای بهزادیان برای این کار از کدوم روش ارائع شده باید استفاده کنم؟
سلام جناب بهزادیان
ایا شما در مورد PocketSphinx اطلاعی دارید؟
ایا برای زبان فارسی کتابخانه اش وحود دارد؟
من خیلی سرچ کردم ولی چیزی پیدا نکردم. حتی براس اجرای خودش هم مشکل دارم.
شما می توانید کمکم کنید
http://stackoverflow.com/q/37225500/4568864
سلام. من هیچ آشنایی با این کتابخانه ندارم و تشخیص صدا کار نکردم. گوگل برای انگلیسی ابزارهای خوبی داره که اونا هم با اینترنت کار می کنن.
سلام
برای باز کردن این پروژه در اندروئید استدیو با مشکای مواجه شدم. چه کنم؟
۰۶-۲۰ ۱۲:۰۴:۵۴٫۴۹۷ ۱۷۲۹-۱۷۴۰/com.google.process.gapps E/StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
java.lang.Throwable: Explicit termination method ‘end’ not called
at dalvik.system.CloseGuard.open(CloseGuard.java:180)
at java.util.zip.Inflater.(Inflater.java:82)
at com.android.okhttp.okio.GzipSource.(GzipSource.java:62)
at com.android.okhttp.internal.http.HttpEngine.unzip(HttpEngine.java:645)
at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:827)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:439)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:384)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:497)
at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105)
at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java)
at com.google.android.gms.http.GoogleHttpClient.a(SourceFile:811)
at com.google.android.gms.http.GoogleHttpClient.a(SourceFile:776)
at com.google.android.gms.http.GoogleHttpClient.execute(SourceFile:676)
at com.google.android.gms.http.GoogleHttpClient.execute(SourceFile:660)
at com.google.android.gms.auth.be.j.a(SourceFile:220)
at com.google.android.gms.auth.be.appcert.a.a(SourceFile:263)
at com.google.android.gms.auth.be.appcert.a.a(SourceFile:132)
at com.google.android.gms.auth.be.appcert.b.a(SourceFile:43)
at com.google.android.gms.auth.b.b.a(SourceFile:62)
at com.google.android.gms.auth.b.a.a(SourceFile:120)
at com.google.android.gms.auth.b.a.a(SourceFile:61)
at com.google.android.gms.auth.be.cron.AuthCronService.a(SourceFile:44)
at com.google.android.gms.gcm.al.run(SourceFile:135)
این خطا هیچ ارتباطی به این کتابخانه نداره و در کتابخانه okhttp رخ داده که اصلا ازش استفاده نشده. اگه تو پروژه خودتون از okhttp استفاده می کنید کد خودتون رو بررسی کنید در غیر این صورت ممکنه سایر برنامههای نصب شده روی گوشی یا ایمولاتور باعث این خطا شده باشند.
سلام اقای بهزادیان
من اشنایی با این کتابخانه ندارم و از ان استفاده نکردم. صرفا پروژه شما را در گوشی ام s6 سامسونگ و همچنین امولیتر اندروئید استدیو اجرا کردم. و این ارورها
سلام دوست عزیز
اول اینکه ممنون بابت کار خوبتون
دوم اینکه من ابن ماژول رو به صورت دستی به اندروید استودیو وارد کردم ولی دو جا ارور میده:
boolean disableSoftKeyboard = a.getBoolean(R.styleable.PersianDatePicker_disableSoftKeyboard, false);
displayDescription = a.getBoolean(R.styleable.PersianDatePicker_displayDescription, false);
این قسمتها رو ارور میده: PersianDatePicker_disableSoftKeyboard و PersianDatePicker_displayDescription
فایل attrs.xml که در شاخه values قرار داره این دو تا خط رو اضافه کنید:
برنامه بعد از نوشتن این مطلب کمی تغییر کرده و باید اصلاح بشه.
با سلام و احترام خدمت حضرتعالی و تشکر از کار ارزشمندتون
من هم همین مشکل رو دارم
برای من سمبل های PersianDatePicker_timezone و PersianDatePicker_displayDescription رو نمی شناسه
چه کار باید کرد؟
سلام.
مشکلی که برای برنامه من وجود داره اینه که هنگام دریافت تاریخ از کاربر همیشه تاریخ جاری رو نشون میده. احتمالا Context اشتباه رو دارم به سازنده PersianDatePicker ارسال میکنم.
قطعه کد:
PersianDatePicker pDatePicker= new PersianDatePicker(getApplicationContext());
PersianCalendar pCal = pDatePicker.getDisplayPersianDate();
Log.w(“pDate”, pCal.getPersianShortDate().toString());
در درون یک تسک آسنکرون.
ممنون میشم راهنمایی کنید،
ایراد از کانتکست نیست. شما دارید ویو رو تو کد میسازید ولی به صفحه اضافهش نمیکنید و تغییرش هم نمیدید. این ویو به صورت پیشفرض با تاریخ فعلی ساخته میشه. برای همین تاریخ جاری را برمیگرداند.
اول این که ویو رو تو XML بسازید، بعد برای گرفتن تاریخ میتوانید هم از رویداد OnDateChangedListener.onDateChanged(int newYear, int newMonth, int newDay)
استفاده کنید و هم میتوانید به سادگی ویو را find کنید و تاریخ انتخاب شده کاربر را با تابع getDisplayDate که شی Date جاوا برمیگرداند یا با تابع getDisplayPersianDate که PersianCalendar برمیگرداند بگیرید.
PersianDatePicker persianDatePicker = (PersianDatePicker) findViewById(R.id.pDatePicker1);
PersianCalendar pCal = persianDatePicker.getDisplayPersianDate();
ممنون از راهنمایی سریع. حل شد 🙂
سلام
من به روش اول این پروژه را به عنوان کتلبخانه به اندروئید استدیو وارد کردم ولی این ارور را می دهد.چه کنم؟
Error:Execution failed for task ‘:app:prepareDebugDependencies’.
> Dependency Error. See console for details.
البته این را هم در کنسول پیدا کردم:
Executing tasks: [:app:generateDebugSources, :app:generateDebugAndroidTestSources]
Configuration on demand is an incubating feature.
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring project ‘:app’.
> A problem occurred configuring project ‘:persianDatePickermaster’.
> failed to find target with hash string ‘android-21’ in: C:\Users\asus\AppData\Local\Android\sdk
* Try:
Run with –stacktrace option to get the stack trace. Run with –info or –debug option to get more log output.
BUILD FAILED
Total time: 3.523 secs
Executing tasks: [:app:assembleDebug]
Configuration on demand is an incubating feature.
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring project ‘:app’.
> A problem occurred configuring project ‘:persianDatePickermaster’.
> failed to find Build Tools revision 23.1.0
* Try:
Run with –stacktrace option to get the stack trace. Run with –info or –debug option to get more log output.
BUILD FAILED
Total time: 1.376 secs
Executing tasks: [:app:assembleDebug]
Configuration on demand is an incubating feature.
WARNING: Dependency Persian Date Picker:persianDatePickermaster:unspecified on project app resolves to an APK archive which is not supported as a compilation dependency. File: F:\maxsoft proje\My Life\drafts\Persian Date Picker\persianDatePickermaster\build\outputs\apk\persianDatePickermaster-release-unsigned.apk
WARNING: Dependency Persian Date Picker:persianDatePickermaster:unspecified on project app resolves to an APK archive which is not supported as a compilation dependency. File: F:\maxsoft proje\My Life\drafts\Persian Date Picker\persianDatePickermaster\build\outputs\apk\persianDatePickermaster-release-unsigned.apk
WARNING: Dependency Persian Date Picker:persianDatePickermaster:unspecified on project app resolves to an APK archive which is not supported as a compilation dependency. File: F:\maxsoft proje\My Life\drafts\Persian Date Picker\persianDatePickermaster\build\outputs\apk\persianDatePickermaster-release-unsigned.apk
WARNING: Dependency Persian Date Picker:persianDatePickermaster:unspecified on project app resolves to an APK archive which is not supported as a compilation dependency. File: F:\maxsoft proje\My Life\drafts\Persian Date Picker\persianDatePickermaster\build\outputs\apk\persianDatePickermaster-release-unsigned.apk
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:persianDatePickermaster:preBuild UP-TO-DATE
:persianDatePickermaster:preReleaseBuild UP-TO-DATE
:persianDatePickermaster:checkReleaseManifest
:persianDatePickermaster:prepareReleaseDependencies
:persianDatePickermaster:compileReleaseAidl
:persianDatePickermaster:compileReleaseRenderscript
:persianDatePickermaster:generateReleaseBuildConfig
:persianDatePickermaster:generateReleaseAssets UP-TO-DATE
:persianDatePickermaster:mergeReleaseAssets
:persianDatePickermaster:generateReleaseResValues
:persianDatePickermaster:generateReleaseResources
:persianDatePickermaster:mergeReleaseResources
:persianDatePickermaster:processReleaseManifest
:persianDatePickermaster:processReleaseResources
:persianDatePickermaster:generateReleaseSources
:persianDatePickermaster:compileReleaseJavaWithJavac
:persianDatePickermaster:transformClassesWithDexForRelease
:persianDatePickermaster:compileReleaseNdk UP-TO-DATE
:persianDatePickermaster:mergeReleaseJniLibFolders
:persianDatePickermaster:transformNative_libsWithMergeJniLibsForRelease
:persianDatePickermaster:processReleaseJavaRes UP-TO-DATE
:persianDatePickermaster:transformResourcesWithMergeJavaResForRelease
:persianDatePickermaster:packageRelease
:app:prepareComAndroidSupportAppcompatV72311Library UP-TO-DATE
:app:prepareComAndroidSupportDesign2311Library UP-TO-DATE
:app:prepareComAndroidSupportRecyclerviewV72311Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42311Library UP-TO-DATE
:app:prepareDebugDependencies
Dependency Persian Date Picker:persianDatePickermaster:unspecified on project app resolves to an APK archive which is not supported as a compilation dependency. File: F:\maxsoft proje\My Life\drafts\Persian Date Picker\persianDatePickermaster\build\outputs\apk\persianDatePickermaster-release-unsigned.apk
Dependency Persian Date Picker:persianDatePickermaster:unspecified on project app resolves to an APK archive which is not supported as a compilation dependency. File: F:\maxsoft proje\My Life\drafts\Persian Date Picker\persianDatePickermaster\build\outputs\apk\persianDatePickermaster-release-unsigned.apk
FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ‘:app:prepareDebugDependencies’.
> Dependency Error. See console for details.
* Try:
Run with –stacktrace option to get the stack trace. Run with –info or –debug option to get more log output.
BUILD FAILED
Total time: 9 mins 54.613 secs
اندروید SDK رو باید آپدیت کنید. ظاهرا خیلی قدیمی است!
سلام و خسته نباشید،
چطور میشه محدود کرد از امروز به بعد و بشه انتخاب کرد و از امروز به بعد مثلا تا ۷ روز بشه انتخاب کرد
سلام. چنین امکانی پیش بینی نشده. پیادهسازی آن راحت است! کمی تغییرات لازم دارد!
سلام
امکان استفاده از این کنترل در زامارین هم هست؟
اگر امکانش هست لطفا کمی در موردش توضیح بدید.ممنون.
سلام، من هنوز جدی سراغ زامارین نرفتم. نمیدونم!
سلام
ممنون و خسته نباشید
من به صورت دستی فایلها رو کپی کردم، حالا بخش تنظیمات رو کجا باید اعمال کنم ؟
وقتی فایلها رو دستی اضافه می کنم دیگه فایل XML ای محتوی “<ir.smartlab.persindatepicker.PersianDatePicker" وجود نداره
سلام من تازه شروع کردم به اشنایی با اندروئید و اگر خدا بخواد تا اخر تابستون یه حرکتی برای نوشتن اپ بکنم. حالا میشه بفرمایید از این کتابخئنه چطوری باید استفاده کنم؟ کاش یه پروژه ای تمرینی هم می گذاشتید. میشه بذارید؟ من از گیت هاب دانلودش کردم اما با خوندن تئضیحاتتان چیزی دستگیرم نشد! بابا هوای ما زیر دیپلمی را هم داشته باشید. ممنونم
وقتی به PersianCalendar یک Date میدم که ساعتش کمتر از ۴ و ۳۰ دقیقه باشه تاریخ روز قبل رو میده
مثلا کد زیر تاریخ روز قبل رو میده:
PersianCalendar pCal = new PersianCalendar();
Date d = act.getDate();
d.setHours(4);
pCal.setTime(d);
ولی اگر d.setHours(5); بزنم تاریخ درست رو میده.
من فک کردم time zone در نظر گرفته نشده
یه متد هست:
protected void calculatePersianDate() {
long julianDate = ((long) Math.floor((getTimeInMillis() – PersianCalendarConstants.MILLIS_JULIAN_EPOCH)) / PersianCalendarConstants.MILLIS_OF_A_DAY);
long PersianRowDate = PersianCalendarUtils.julianToPersian(julianDate);
long year = PersianRowDate >> 16;
int month = (int) (PersianRowDate & 0xff00) >> 8;
int day = (int) (PersianRowDate & 0xff);
this.persianYear = (int) (year > 0 ? year : year – 1);
this.persianMonth = month;
this.persianDay = day;
}
احساس میکنم باید به خط اول time zone رو به میلی ثانیه تبدیل کنم بعد جلوی getTimeInMillis() اضافه کنم (درسته؟) ولی نمیدونم چطوری time zone رو طوری بگیرم که به Long یا int بده
از getTimeZone استفاده کردم ولی با فرمت TimeZone میده
امکانش هست راهنماییم کنید ؟؟؟
سلام…
اول اینکه از شما تشکر میکنم…
دوم اینکه تاریخ ارسالی از لایه رو که میگیرم، من چطور میتونم در کد جاوا بفهمم سال کبیسه بود یا نه(بدون توجه به ماهی که کاربر انتخاب کرده)؟؟
مثلا اگر کاربر تاریخ ۱۳۹۵/۰۴/۲۹ رو وارد کرد، در جاوا چطور میشه تشخیص داد که اسفند سال ورودی کاربر یعنی۱۳۹۵، کبیسه هست یا نه؟؟
ممنون از کارتون
من یه مشکل دارم .تو فرم از تاریخ و تا تاریخ دارم که دوتا ساختم
منتها مشکل این فقط تاریخ دومی رو بر می گردونه
سلام
وقتی ویجت رو به فایل xml اضافه میکنم ارور rendering problems میده و میگه
Failed to find the style corresponding to the id -1
ممنون میشم راهنمایی کنید
سلام
آقا بسیار سپاسگذار واسه این کتابخونه عالی
فقط من نتونستم تو اندروید استودیو اضافش کنم. اگه میشه یه راهنمایی کن چطوریباید اضافه کنم.
به عنوان یه new muodule اضافه کردم ولی تو xml
این رو نمیشناسه
جواب شما را بالا نوشته ام
با سلام و احترام.
سوالی داشتم از خدمتتان :
۱- چطور میتوانم دکمه های بالا و پایین و تاریخ قبل و بعد را مخفی کنم تا ارتفاع کنترل کوچکتر شود؟
۲- چطور میتوانم فونت کنترل را تغییر دهم.
باتشکر
ممنونم بابت ماژول خوبی که نوشتید سپاس گذارم دوست عزیز 🙂
سلام. ببخشید من چطور میتونم این DatePicker رو به عنوان Library در Android Studio اضافه کنم ؟ حسابی کلافه شدم
سلام. اگر از گیتهاب دانلود کنید برنامه نمونه به عنوان یک لایبرری از این DatePicker استفاده میکنه.
ممنون از کتابخانه ی خوبتون
کارتون عالی بود
وقت کردید حتما لینک گردلشم درست کنین
با سلام هنکام وارد کردن کتابخانه در اکلیپس ارور no project found to import نمایش داده می شود
برای رفع این ارور چه کاری می تونم انجام بدم؟
پروژه رو تبدیل کردم به ماژول اندروید استودیو! توصیه میکنم شما هم به استفاده از اندروید استودیو روی بیارید چون همین چند روز پیش پشتیبانی اکلیپس را گوگل به طور کامل متوقف کرد.
سلام
ممنون بابت لایبرری خوبتون
من هر کاری میکنم از تاریخ جاری رو برمیگردونه
این کدم:
final PersianDatePicker persianDatePicker = (PersianDatePicker) dialog.findViewById(R.id.pdpAge);
final PersianCalendar pCal = persianDatePicker.getDisplayPersianDate();
Log.i(“LOG”, “Date: ” + pCal.getPersianLongDate().toString());
برای اضافه کردن پروژه از روش دوم و اضافه کردن فایلها به پروژم استفاده کردم
ممنون میشم راهنماییم کنید
این کد رو هم توی نمونه دانلود شده برنامتون از github وارد کردم و فقط تاریخ جاری رو برمیگردونه!!!
PersianDatePicker pdp = (PersianDatePicker) findViewById(R.id.pdp);
final PersianCalendar pCal = pdp.getDisplayPersianDate();
pdp.setOnDateChangedListener(new PersianDatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(int newYear, int newMonth, int newDay) {
Log.i(“LOG”, “Date: ” + pCal.getPersianLongDateAndTime());
}
});
قطعه کدی که فرستادید مشکل منطقی داره. شما همون اول کار و بعد از ایجاد pdp با فراخوانی متد getDisplayPersianDate یک شیء PersianCalendar رو ازش میگیرید که با تاریخ روز جاری مقداردهی شده و بعد هم از همون شیء تاریخ رو میپرسید و اون هم تاریخ فعلی رو بهتون میده و نه تاریخی که دیت پیکر نمایش میده.
احتمالا باید کدتون رو به شکل زیر اصلاح کنید:
final PersianDatePicker pdp = (PersianDatePicker) findViewById(R.id.pdp);
pdp.setOnDateChangedListener(new PersianDatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(int newYear, int newMonth, int newDay) {
Log.i("LOG", "New Year: " + newYear);
Log.i("LOG", "New Month: " + newMonth);
Log.i("LOG", "New Day: " + newDay);
Log.i("LOG", "Date: " + pdp.getDisplayPersianDate().getPersianLongDateAndTime());
// OR
PersianCalendar pCal = new PersianCalendar();
pCal.setPersianDate(newYear, newMonth, newDay);
Log.i("LOG", "Date: " + pCal.getPersianLongDateAndTime());
}
}
);
سلام دوست عزیز . ممنون از این ماژول .
بزرگترین مشکلی که فعلا باهاش دارم اینه که وقتی به اندروید استودیو اضافش می کنم تو لی اوتی که اضافه شده مینویسه
Failed to find the style corresponding to the id -1
نمیدونم باید چه کرد . شما راهی سراغ دارین ؟
با سلام
من از کتابخانه PersianDatePicker-master در برنامه اندروید استفاده کردم ولی متاسفانه ساعت ۱۲ تا ۳:۳۰ تاریخ میلادی و شمسی datepicker یک روز باهم اختلاف دارند
ساعت ۱۲ تا ۳:۳۰ تاریخ شمسی datepicker به روز نمی شود در صورتی که تاریخ میلادی معادل آن به روز می شود
PersianCalendar persianCalendar = new PersianCalendar();
persianCalendar.setTimeZone(TimeZone.getDefault())
برای تنظیم timezone از دستورات فوق استفاده کردم ولی متاسفانه جواب نگرفتم
لطفا راهنماییم کنید.
سپاسگزارم
سلام
لطفا راجب اختلاف time zone راهنماییم کنید
timezone برای تاریخ میلادی اعمال میشه ولی برای تاریخ شمسی اعمال نمیشه و این باعث میشه ساعت ۱۲تا ۳:۳۰ تاریخ شمسی انتخاب شده با تاریخ میلادی معادل اون یک روز تفاوت داشته باشه.
لطفا کمکم کنید
این مشکل تو برنامه من اساسیه و کل برنامه رو با مشکل مواجه کرده لطفا راهنماییم کنید
تشکر
سلام و درود به همه … من میخوام خودم از کد های برنامه استفاده کنم و اونو به پروژم اد نکنم .. ولی پوشه src خالی هست وقتی دانلود میکنم
سورس کد پروژه تو گیتهاب رو تبدیل کردم به یک پروژه اندروید استودیو برای دموی برنامه به همراه ماژول persiandatepicker که سورسهای تاریخگزین پارسی توی اون هست.
من خودم الان دانلود کردم و چک کردم و مشکلی نداشت.
سلام میشه منو راهنمایی بفرمایی من از شما بسیار ممنون میشم من نمیتونم تاریخ رو بگیرم . نمیدونم چرا . میشه منو راهنمایی کنید که تاریخ دلخواهم رو از یو ای شما بگیرم . ممنونم.
هر زمان که خواستید می توانید تاریخی که کاربر انتخاب کرده است را به یکی از دو شکل java.util.Date و ir.smartlab.persindatepicker.util.PersianCalendar بگیرید:
Date d = persianDatePicker.getDisplayDate();
// OR
PersianCalendar pCal = persianDatePicker.getDisplayPersianDate();
در متن پست هست.
من وقتی که تابع رو صدا میزدم و داخل Toast نمایش می دادم کل مقدار pCal رو نشون میداد، اما با این روش میشه جداگونه هر مقدار رو گرفت و استفاده کرد:
PersianCalendar pCal = persianDatePicker.getDisplayPersianDate();
int year= pCal.getPersianYear();
String mount= pCal.getPersianMonthName();
int day= pCal.getPersianDay();
Toast.makeText(MainActivity.this, “”+day +””+mount+”” + year ,Toast.LENGTH_LONG).show();
سلام. توی api 25 من اجراش میکنم مثل اینکه سال مرتب نیست!! یعنی میریم پایین بعد از سال ۱۳۸۵ میرسیم به سال ۱۴۰۵ !
لطفا بررسی کنید.
https://ibb.co/d2AOFa
ممنون.
از متن:
تعیین محدوده سالها
به صورت پیش فرض محدوده سالها، از ۱۰ سال قبل از سال فعلی تا ۱۰ سال بعد از آن است. اگر بخواهید می توانید این مقدار را با استفاده از ویژگی yearRange تغییر دهید…
سلام خیلی ممنون از پکیج فوق العادتون. میخواستم بدونم چجوری میشه اندازه ش روی لایوت رو تغییر داد. من هر کاری کردم کوچکترش کنم امکان پذیر نبود. با تشکر
سلام
تشکر از کتابخانه با ارزشتون
به مشکلی برخوردم در خصوص Timezone
همه کامنت هارو خوندم و خیلیا این مشکل رو داشتن و به یکیش پاسخ داده بودید که از روش زیر عمل کنه:
pCal.setTimeZone(TimeZone.getDefault());
و یا اینکه Timezone گوشی رو روی تهران بزاره.
من هردو روش رو امتحان کردم و نتیجه ای نگرفتم و همچنان اختلاف یک روزه رو در ساعت ۲۴:۰۰ تا ۰۳:۳۰ دارم.
جالب اینجاست که روز هفته رو درست نشون میده، ولی روز ماه رو توی این سه ساعت و نیم با یک رو تاخیر نشون میده.
اگر میشه برای این مشکل بنده رو راهنمایی کنید و اگر یک باگ هست بگید که دنبالش نریم.
با استفاده از کلاس TimeZones تایم زون رو روی ASIA_TEHRAN یا IRAN ست کنید:
pCal.setTimeZone(TimeZones.IRAN)
یا
pCal.setTimeZone(TimeZones.ASIA_TEHRAN)
نتیجه رو به من هم بگید. اگر مشکل حل نشد لطفا یه ایشو تو گیتهاب باز کنید.
ممنون از جوابت ولی همچنان این مشکل پا برجاست
از روش های زیر رفتم:
pCal.setTimeZone(TimeZone.getTimeZone(“Iran”));
و
pCal.setTimeZone(TimeZone.getTimeZone(“Asia/Tehran”));
و
pCal.setTimeZone(TimeZone.getTimeZone(“GMT+03:30”));
نمیشد مستقیم از Timezones در setTimeZone استفاده کرد و از کد های بالا که معادل کد شماست استفاده کردم ولی همچنان مشکل پابرجاست!!!
اگر راهکار دیگه ای به ذهنتون میرسه لطفا راهنمایی کنید.
توی Github هم یه ایشو باز کردم
سلام خیلی عالی بود من در اندروید استودیو و در یک دیالوگ استفاده کردم .
ولی یه مشکل کوچک داره اینکه موقع انتخاب نام ماه ها ، app:displayMonthNames=”true” اسفند ماه رو نشان نمیده ولی به صورت عددی درست کار می کنه.
دوستانی که در اندروید استودیو با دیالوگ مشکل داشتن باید به شکل زیر استفاده کنن :
View promptsView;
PersianDatePicker pdp;
promptsView = li.inflate(R.layout.mydialog, null);
pdp = (PersianDatePicker) promptsView.findViewById(R.id.alarmdate);
سلام و خسته نباشید.
من در اندروید استودیو ورژن ۲٫۲٫۳ لایبرری رو ایمپورت کردم و به خطایی برنخوردم ولی بعد از اضافه کردن ‘ xmlns:persianDatePicker=”http://schemas.android.com/apk/res-auto”‘
در فایل Layout اخطار this namespace is never used میدهد و بعد از افزودت کدهای
در لایه بعد از اجرا خطای ‘has stoped working’ میدهد.
لطفا راهنمایی کنید
سلام خدمت استاد عزیز! لطفا آموزش ایمپورت و استفاده این کتابخانه ارزشمند رو در اندروید استودیو هم قرار بدید چون بنده هر چه تلاش کردم نتونستم داخل اندورید استودیو ازش استفاده کنم.
چطوری توی ایکلیپس این پروژه رو import کنم و ازش استفاده کنم؟ چون الان توی github برای اندروید استودیوش فقط هست
سلام
اولا خسته نباشی مهندس
دوما خیلی لطف کردی ک به اشتراک گذاشتی ( واقعا ارزشمنده )
فقط میخواستم ازت خواهش کنم اگر امکان باشه همون قدیمیه ک تو اکلیپس میشد ازش استفاده کرد رو برام بفرستی
ی دنیا ممنونت میشم
تشکر
از این لینک برای دانلود استفاده کنید: لینک
درود بر شما و سپاس بابت آموزش کاربردی که قرار دادید فقط یک سوال …. در روش اول بعد از دانلود کردن از سایت گیت هاب برای ایمپورت کردن بعنوان یک پروژه به ایکیلیپس چون که ساختار این پروژه مطابق با اندروید استادیو هست نمیشه ایمپورت کنم و زمان ایمپورت No Project Founds arr found to Import را نمایش میدهد و در مورد روش دوم هم آیا خروجی این برنامه یک کامپوننت میشود که مثلا بتونم توی یکی از layout های مورد نظرم اضافه کنم؟
با سپاس
این دو روش مربوط به زمان انتشار نسخه اول برنامه است که در اکلیپس وارد میشد. در نسخه دوم، یک پروژه اندروید استودیو است که یک ماژول داره که خود کتابخونه است و یک ماژوا داره که برنامه نمونه است. برنامه نمونه نحوه کار با این کتابخونه رو نشون میده
با سلام
من در اندروید استادیو از این کامپوننت تاریخ استفاده کردم و به درستی اجرا شد.
خیلی خوب و عالی بود و به درستی کار کرد. صمیمانه سپاسگذارم
سلام ضمن تشکر از زحمات شما. برای دریافت تاریخ ورودی از طرف کاربر مشکل دارم و برنامه فقط تاریخ روز رو دریافت میکنه.
سلام persian calendar هم هست ک مثل این ب صورت کتابخونه ازش استفاده کنیم؟
از این کتابخونه استفاده کنید:
https://github.com/mortezaadi/persian-calendar
سلام
ضمن تشکر از شما ،من می خوام که این datePicker رو با alarmManager ترکیب کنم برای همین نیاز دارم که سال و ماه و روز میلادی معادل تاریخ شمسی که کاربر انتخاب کرده رو به صورت جدا از هم داشته باشم ولی متاسفانه حتی بوسیله simpleDateFormat هم نتونستم این کار و انجام بدم و فقط تاریخ روز رو برمی گردونه به علاوه اینکه من میخوام که حتما از شی persianCalendar برای دریافت تاریخ استفاده کنم چون فقط بوسیله ی این شی میتونم timeZone رو تنظیم کنم.
لطفا اگه براتون امکان داره راهنماییم کنید.
برای گرفتن تاریخی که کاربر انتخاب میکند از رویداد onDateChanged استفاده کنید:
pdp.setOnDateChangedListener
این رویداد هر زمان که کاربر تاریخ رو تغییر بده، روز و ماه و سال جدید رو به شما میده. اونها رو بدید به یک شی Persiancalendar و بعد با تابع getTime زمان UTC رو بگیرید ازش
سلام
لطف میکنید لینک دانلود فایل jar رو بزارید
فایل jar کتاب خانیکه واسه Persian Date Picker Dialog استفاده میشه
برای کامپوننتهای اندروید از jar استفاده نمیشه.
سلام
از شما برای ساخت این کتابخانه واقعا متشکرم
ولی ایکاش یک آموزش کامل از نحوه استفاده از ان هم می ساختید تا بشه درست از این زحمت شما استفاده کرد
من همه راه هایی که به کاربران گفتید را امتحان کردم ولی به علت کامل نبودن هیچکدام از جوابها هنوز نتوانسته ام تاریخ انتخابی کاربر را بدست بیاورم
final PersianDatePicker pdp = (PersianDatePicker) findViewById(R.id.pdate);
PersianCalendar persianCal = new PersianCalendar();
persianCal.getPersianLongDateAndTime();
persianCal = pdp.getDisplayPersianDate();
int year= persianCal.getPersianYear();
String mount= persianCal.getPersianMonthName();
int day= persianCal.getPersianDay();
Toast.makeText(Hazine.this, “”+day +””+mount+”” + year ,Toast.LENGTH_LONG).show();
این دستورات پیغام NULL بودن .persiandatepicker.PersianDatePicker.setDisplayPersianDate(app.persiandatepicker.util.PersianCalendar)
میدهد
این را هم نوشتم باز همین پیغام را داد:
pdp.setOnDateChangedListener(new PersianDatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(int newYear, int newMonth, int newDay) {
Log.i(“LOG”, “New Year: ” + newYear);
Log.i(“LOG”, “New Month: ” + newMonth);
Log.i(“LOG”, “New Day: ” + newDay);
// Log.i(“LOG”, “Date: ” + pdp.getDisplayPersianDate().getPersianLongDateAndTime());
// OR
PersianCalendar pCal = new PersianCalendar();
pCal.setPersianDate(newYear, newMonth, newDay);
Log.i(“LOG”, “Date: ” + pCal.getPersianLongDateAndTime());
}
}
);
ممنون میشم کمک کنید
در گیتهاب یک پروژه نمونه هست. اونو امتحان کردید؟
با عرض سلام و خسته نباشید.
برای استفاده از این library اول باید اون رو Import کرد ولی در اندروید استودیوی من این گزینه وجود نداره.. یک importSettings هست به جاش.. میدونید از چه راه دیگه ای میتونم این کارimport رو انجام بدم؟
https://stackoverflow.com/questions/35223028/how-to-add-another-project-in-my-existing-android-studio-project/35223130
سلام. ممنون از آموزش خوبتون
فاصله دو خط جدا کننده تاریخ رو چه طور میشه کم کرد؟
سلام من میخواستم بدونم چطور میتونم برای دیتا پیکر تعریف کنم که از تاریخ امروز رو جلوتر نمایش نده ولی تا ۲۰ سال قبل رو نمایش بده لطفا کمکم کنید
سلام مهندس، وقت بخیر
من موفق نشدم پروژه رو ایپورت کنم، اگه براتون مقدوره ممنون میشم به ایمیلم ارسال کنید،
javadpatriot98@yahoo.com
ممنون از لطف شما، برای من بسیار کاربردی بود.
با سلام
ممنون از ابزار بسیار خوب و کاربردی که در اختیار ما قرار دادید.
من یه مشکلی برخوردم
فرض کنید من تاریخ رو روی ۳۱ شهریور ۱۳۹۸ تنظیم کردم
تایع getDisplayPersianDate تاریخ درست ۱۳۹۸/۶/۳۱ رو برای من برمیگردونه
ولی وقتی از تایع getDisplayDate استفاده میکنم برای همون تاریخ ۱۱۹/۸/۰ برگشت داده میشه.
من نیاز به هر دو تاریخ میلادی و شمسی دارم.
ممنون میشم راهنمایی بفرمایید.
با تشکر از شما