PDA

View Full Version : یک تجربه (در مورد تاریخ)



(امید)
یک شنبه 18 اسفند 1381, 10:55 صبح
سلام

اینو برا کسایی می نویسم که تازه می خوان کار برنامه نویسی رو شروع کنن.

برای کار با تاریخ دو راه کار دارین:

1- شما بصورت string تاریخ شمسی رو بگیرید و بعد از چک کردن درست ارقام ماه و روز و ... اونو با یه تابع تبدیل به میلادی کنید . از این به بعد برنامه در همه جا باید با این تاریخ میلادی کار کنه . فقط برای نمایش به کار بر باز اونو بر گردونید به شمسی که اونم string است . تابع تبدیل تاریخ رو من به نقل از برنامه نویس دات کام و نوشته آقای بابک یعقوبی تو همین بخش آوردم.
همه چیزش درسته حتی محاسبه سالهای کبیسه.(دست آقای یعقوبی درد نکنه)

2- اصلا چیزی یه نام date تعریف نکنید. شما مثلا تاریخ رو بصورت 18/12/1381
وارد می کنید . می تونید مثلا اونو تبدیل به عدد 13811218 بکنید و مقایسه ها رو به این صورت انجام بدید . تو این زمینه کارای دیگه ای هم می تونید انجام بدید

خوب حالا اگه می خوایید بدونید این دردسرا برا چیه می تونید این کد رو امتحان کنید.


var mydate:Tdatetime;
edit1.text:='1381/02/30';
mydate:=strtodate(edit1.text);
امید

مهدی کرامتی
دوشنبه 19 مرداد 1383, 12:56 عصر
یک کار جالبی هم که من اخیرا در برنامه‌هام میکنم نگهداری تاریخ و زمان بصورت یک عدد Integer در دیتابیس است.

برای تبدیل تاریخ بین فرمت TDateTime و Integer‌ دو تابع در یونیت DateUtils وجود دارد بنامهای DateTimeToUnix و UnixToDateTime .

در این حالت تاریخ و زمان در حقیقت با فرمت Unix TimeStamp نگهداری میشود. عدد حاصله نیز یک عدد صحیح است که زمان موردنظر بر اساس تعداد ثانیه‌های گذشته از 01/01/1970 میباشد.

به این ترتیب نگهداری تاریخ و انتقال و نگهداری آن در دیتابیس‌های مختلف بسیار آسان میشود.

برای نمایش تاریخ نیز کافی است یک فیلد Calculated به جدول مورد نظر اضافه کنید که عدد فوق را دریافت کرده و بصورت قابل فهم برای کاربر تبدیل کند.

موفق باشید.

Inprise
دوشنبه 19 مرداد 1383, 13:16 عصر
در این حالت تاریخ و زمان در حقیقت با فرمت Unix TimeStamp نگهداری میشود. عدد حاصله نیز یک عدد صحیح است که زمان موردنظر بر اساس تعداد ثانیه‌های گذشته از 01/01/1970 میباشد

خود لینوکس هم در سرویسهائی مثل Syslog یا Apache از همین ویژگی استفاده میکنه :)

مهندس
چهارشنبه 28 مرداد 1383, 12:31 عصر
سلام

من هم چند ماهی است که کار با دلفی رو شروع کردم و تازه کارم .... ولی دیگه خودم رو بیشتر از این درگیر تاریخ و این حرفا نکردم...
در برنامه هام از Shdate سایت FarsiComponents استفاده میکنم..

به نظر من که با وجود این کامپوننت دیگه شایسته نیست آدم بخواد وقتشو روی تاریخ و این حرفا بگذرونه.
ShDAte که خودش تاریخ رو به میلادی در database میریزه و خلاص.......

بد میگم ؟ :wink: