PDA

View Full Version : سوال: کد زمان باقی مانده



farshad_momtaz
دوشنبه 30 شهریور 1388, 08:20 صبح
اگر بخوام کدی را بنویسم که در صورتی که hdone ساعت,mdone دقیقه,sdone ثانیه و ddone روز(همشون توی دیتا بیس هستن) اتفاقی را نشون بده یه کد می خوام که به ترتیب ثانیه:دقیقه:ساعت:روز موجود را به اون اتفاق نشون بده چطوری باید این کار را بکنم یعنی کدش چی هست؟
و یه سوال دیگه برای این که تاریخ را وارد دیتابیس کنم از چه کدی استفاده کنم(ddone را) و تایپ فیلد dateهستش!
خیلی ممنون

امیـرحسین
دوشنبه 30 شهریور 1388, 15:01 عصر
راه ساده اینه که توسط تابع mktime (http://ir.php.net/manual-lookup.php?pattern=mktime&src=)، مقادیر رو به ثانیه استاندارد تبدیل کنید و از مقدار تابع time (http://ir.php.net/manual-lookup.php?pattern=time&src=) کم کنید. عدد بدست اومده، فاصله زمانی رو به ثانیه است که توسط تابع date (http://ir.php.net/manual-lookup.php?pattern=date&src=) می تونید به هر فرمتی که مخواید درش بیادرید.

farshad_momtaz
دوشنبه 30 شهریور 1388, 20:09 عصر
چطوری از تابع mktime و time می شه استفاده کرد فقط
mktime-time =$date
این طوری mktime را چطوری ست کنم؟

امیـرحسین
دوشنبه 30 شهریور 1388, 23:02 عصر
کاملا واضحه که شما به لینکهایی که من دادم، توجه نکردید.
اول واژه timestamp رو باید بدونید. Timestamp شیوه ایه که سیستمهای UNIX برای تعیین زمان ازش استفاده می کنند. timestamp حاوی تعداد ثانیه از اولین لحظه سال 1970 میلادی هست. مثلا تابع time، این تعداد ثانیه رو تا الان میده. تابع date مقدار timestamp میگیره و خروجی تاریخ مثل 2009/05/16 رو میده و تابع mktime، روز و ماه و سال میگیره و timestamp تولید می کنه.
حالا این رو بخونید:

راه ساده اینه که توسط تابع mktime، مقادیر رو به ثانیه استاندارد تبدیل کنید و از مقدار تابع time کم کنید. عدد بدست اومده، فاصله زمانی رو به ثانیه است که توسط تابع date می تونید به هر فرمتی که مخواید درش بیادرید.
شما روز و ماه و سالی که دارید رو با mktime به timestamp که یه عدده، تبدیل می کنید. این میشه timestamp اون تاریخ (مثلا 2 روز پیش). و با تابع time، مقدار timestamp الان رو بدست میارید. وقتی timestamp الان رو از timestamp تاریختون (دو روز پیش) کم کنید> فاصله اون تاریخ تا الان بدست میاد البته به ثانیه.
حالا میتونید این تعداد ثانیه رو هرجور که میخواید باهاش کار کنید مثلا تقسیم بر 3600 کنید تا این فاصله رو به ساعت بگیرید و غیره.