PDA

View Full Version : تاریخ من را به تاریخ سپرد . به .... رفتم



jeus
دوشنبه 17 تیر 1387, 05:56 صبح
سلام دوستان
بابای من توی کار با تاریخ در اومد
من برنامه ام یکسری اسم میگیره به عنوان ثبت نام و مشخصاتی که باید وارد دیتابیس MYSQl من بشه شامل تاریخ ثبت نام هم میشه حالا من یک سئوال از دوستان دارم من برنامه تبدیل تاریخ میلادی به شمسی را دارم اما متاسفانه با مشکلات عدیده ای مواجه ام و بین دو راهی مونده ام که چه باید بکنم .
داده های تاریخ را چگونه توی MYSQL ذخیره نمایم آیا از varchar استفاده نمایم یا از DATETIME و آیا تاریخ را میلادی وارد کنم و یا اینکه شمسی آیا من میتوانم درون فیلد DATETIME داده تاریخ شمسی وارد نمایم ؟ اگر من تاریخ میلادی را وارد نمایم چگونه میتوانم به فرض مثال داده ها را که میخواهم درون یک JTable قرار دهم به صورت شمسی نمایش دهم ، کارم سخت نمیشه
اخر کلام اینکه دوستان تجربتون را در اختیار من قرار بدید
مممممممممننننننننننوووووو ووون

kobari
دوشنبه 17 تیر 1387, 10:35 صبح
بنظر من ذخیره سازی تاریخ با دیتا تایپی بشکل رشته های کاراکتری در دیتا بیس بزرگترین اشتباه است که متاسفانه در خیلی از اپلیکیشن ها به این صورت عمل میکنند. را حل اصولی تر این است که فیلد تاریخ با تایپ DATE در دیتا بیس ذخیره شود و هنکام Data Manipulation یا از طریق توابع Store Procedure در جملات SQL و یا از طریق تبدیل محتوای JTextField عمل تبدیل تاریخ میلادی / شمسی قبل و بعد از دسترسی به دیتا بیس انجام گیرد. به این صورت تمام امکاناتی که برای کار با دیتا تایپ تاریخ بصورت ذاتی در دیتا بیس وجود دارد حفظ خواهند شد و همچنان انعطاف پذیری این دیتا تایپ برایتان باقی خواهد ماند . مثلا برای اعمال عملیات جمع یا منها روی تاریخ هیچ مشکلی وجود نخواهد داشت ضمن آنکه قابلیت portability دیتا نیز حفظ خواهد شد.

javaphantom
دوشنبه 17 تیر 1387, 12:22 عصر
بنظر من ذخیره سازی تاریخ با دیتا تایپی بشکل رشته های کاراکتری در دیتا بیس بزرگترین اشتباه است که متاسفانه در خیلی از اپلیکیشن ها به این صورت عمل میکنند. را حل اصولی تر این است که فیلد تاریخ با تایپ DATE در دیتا بیس ذخیره شود و هنکام Data Manipulation یا از طریق توابع Store Procedure در جملات SQL و یا از طریق تبدیل محتوای JTextField عمل تبدیل تاریخ میلادی / شمسی قبل و بعد از دسترسی به دیتا بیس انجام گیرد. به این صورت تمام امکاناتی که برای کار با دیتا تایپ تاریخ بصورت ذاتی در دیتا بیس وجود دارد حفظ خواهند شد و همچنان انعطاف پذیری این دیتا تایپ برایتان باقی خواهد ماند . مثلا برای اعمال عملیات جمع یا منها روی تاریخ هیچ مشکلی وجود نخواهد داشت ضمن آنکه قابلیت portability دیتا نیز حفظ خواهد شد.

کاملا موافقم با شما جناب kobari
نظر من این است که از طریق یک trigger توی database تاریخ سیستم رو بخونه بعد از هر عمل update یا insert ویا هرچی بعد موقع نمایش از database بر روی GUI بیاد از تابع تبدیل میلادی به جلالی استفاده کنه.
API تبدیلش رو توی همین فروم من دیدم که link دادن نبود توی internet یک seach بزن پیدا می کنی

jeus
دوشنبه 17 تیر 1387, 13:09 عصر
دوستان از هر دو شما منونم و از اینکه شما راه حل را برای من روشن کردید ممنونم ولی یک سئوال دارم البته فکر میکنم جوابشو خودم بدونم اما میخواهم مطمئن بشم که برای وارد کردن تاریخ شمسی حالا غیر از روز ثبت نام و یا به فرض مثال تاریخ روز تولد را خواستم وارد کنم باید از اونو به میلادی تبدیل کنم ؟
دوستان من یک کد میخواهم از تبدیل تاریخ شمسی به میلادی لطفا برام بگذارید .
با تشکر از همه دوستان

maysamscript
دوشنبه 17 تیر 1387, 23:21 عصر
سلام
من تازه می خوام جاوا رو شروع کنم و اطلاعاتم در مورد جاوا صفره ولی php رو زیاد کار کردم. در ضمن با تاریخ هم زیاد کار کردم. می خواستم بدونم java با timestamp هم کار میکنه؟ اگه اینجوری باشه که بهترین کار اینکه timestamp تاریخ رو گذاشت تو دیتابیس بعد هر نوع تاریخی که خواستیم ازش بیرون بکشیم.

mazdadoost
سه شنبه 18 تیر 1387, 12:43 عصر
کاملا موافقم با شما جناب kobari
نظر من این است که از طریق یک trigger توی database تاریخ سیستم رو بخونه بعد از هر عمل update یا insert ویا هرچی بعد موقع نمایش از database بر روی GUI بیاد از تابع تبدیل میلادی به جلالی استفاده کنه.
API تبدیلش رو توی همین فروم من دیدم که link دادن نبود توی internet یک seach بزن پیدا می کنی

با سلام:
در استفاده از تریگر ها فقط می خواستم خاطر نشان کنم که با انتقال منطق کاری برنامه در زمینه کار با تاریخ ها متاسفانه قابلیت انتقال رو از دست میدیم.(چون متاسفانه تریگر ها همچین هم در SQL استاندارد نشدن و اصولا بعضی از DB ها از تریگر پشتیبانی نمیکنند!)

یه نکته دیگه در استفاده از تاریخ اینه که از امکانات ذاتی خود API جاوا استفاده کنیم.بنده در چند پست به دوستان پیشنهاد استفاده از پیاده سازی تاریخ شمسی برای کلاس Calender رو دادم ولی ظاهرا کسی استقبال نکرده.
اما با این حال باز هم لینکشو میذلرم چون بهترین راه حل از نظر بنده همین کلاس هست.کلا بهتره از Abstraction های موجود استفاده کرد و Low Level کدینگ رو به این واسط ها ی استاندارد سپرد.
http://barnamenevis.org/forum/showthread.php?t=104621