PDA

View Full Version : سوال: محاسبه سوابق کاری



php1390
شنبه 10 فروردین 1392, 13:38 عصر
سلام
بهترین راه برای محاسبه سوابق کاری یک کارمند بصورت ماه و سال به چه صورت میباشد.
فرض کنید یک کارمند در حال حاضر 3 سال و 6 ماه سابقه کار دارد ودر دیتابیس ذخیره شده است.
برای افزایش سوابق کاری با افزایش تاریخ از چه تابعی باید استفاده شود.
بعنوان مثال سابقه شخص تا تاریخ 92/01/01 هشت سال و 8 ماه است برای اینکه در تاریخ 92/02/01 یکماه بصورت خودکار به سوابق ایشان اضافه شود باید از چه کدی استفاده کنم .ودر سالهای بعدی به ازای هر 12 ماه یکسال اضافه شود.زبان برنامه php میباشد.
با تشکر از تمامی دوستان

$ M 3 H R D A D $
شنبه 10 فروردین 1392, 14:00 عصر
تاریخ و به timstamp تبدیل کنید و بهش با عملگر + تاریخ اضافه کنید و دوباره به زما تتبدیل کنید
کار با تاریخ در php و جستجو کنید

php1390
شنبه 10 فروردین 1392, 14:44 عصر
تاریخ و به timstamp تبدیل کنید و بهش با عملگر + تاریخ اضافه کنید و دوباره به زما تتبدیل کنید
کار با تاریخ در php و جستجو کنید
میشه نمونه کد بزارید:یعنی با توجه به مثال اول باید تاریخ 92/01/01تبدیل شود وبا هشت سال و 8 ماه جمع شود و بعد از هر ماه به حاصل جمع قبلی یکماه اضافه شود.
با تشکر از جواب شما

MMSHFE
شنبه 10 فروردین 1392, 14:46 عصر
اگه از PHP 5.3 به بعد استفاده میکنید، میتونید با ایجاد یک شئ از کلاس DateTime و متد diff (یا تابع مستعارش یعنی date_diff اگه بخواین شئ گرا کار نکنید)، اختلاف دو تاریخ رو محاسبه کنید.

php1390
شنبه 10 فروردین 1392, 15:01 عصر
اگه از PHP 5.3 به بعد استفاده میکنید، میتونید با ایجاد یک شئ از کلاس DateTime و متد diff (یا تابع مستعارش یعنی date_diff اگه بخواین شئ گرا کار نکنید)، اختلاف دو تاریخ رو محاسبه کنید.
لطفا در صورت امکان یک راهنمایی درباره اینکه با date_diffاختلاف دو تاریخ رو محاسبه کنم و با 8سال و 8 ماه جمع کنم و در پایان سابقه شخص رو به سال وماه برگردانم.
با تشکر صمیمانه از جواب شما

Unique
شنبه 10 فروردین 1392, 15:19 عصر
من یک جای کار شما را متوجه نمیشم ، اصلا چه اهمیتی داره شما توی database بیاین سال به سال اضافه کنید و این داستان ها ،‌ شما باید تاریخ استخدام شخص را داشته باشین و هر بار که میخواین سابقه را در بیارین به راحتی تا روز جاری را هم حساب کنید ،‌شما کافیه تاریخ استخدام را به فرمت میلادی ذخیره کنید و با استفاده از تابع strtotime اختلاف را بر حسب روز به دست بیارین اینطوری :


$diff = (strtotime(date("Y-m-d H:i:s")) - strtotime($row['startdate'])) / 3600;

اگه time-zone را هم بیارین روی tehran دیگه همه چیز حله.
حالا که تعداد روز را دارین با چند تا جمع و تفریق ساده میشه تعداد سال و ماه و روز حتی ساعت و دقیقه و ثانیه را هم به دست آورد.