PDA

View Full Version : حرفه ای: تبدیل تاریخ عددی به حروف



amirepsilon
پنج شنبه 21 آبان 1388, 06:10 صبح
سلام
دوستان چطور میتونیم تاریخ رو به این صورت نمایش بدیم :

تاریخ درج خبر : سه روز پیش
تاریخ درج خبر : دو دقیقه پیش

zoghal
پنج شنبه 21 آبان 1388, 09:16 صبح
تاریخ و رمان مورد نظر و تاریخ و زمان حال رو در میاری. تبدیل به ثانیه میکنه هر دو رو.
از هم کمشون میکنی. یک زمان بر اساس ثانیه بدست میاری.

حالا اینجا روش های زیادی وجود داره.

مثلا اگر عدد بدست اومده رو به 31536000 میکنی خارج قسمت میشه سال
باقی مانده رو بر 12 تقسیم میکنید. خارج قسمت میشه ماه
باز باقی مانده رو تقسیم بر 30 میکنی خارج قسمت میشه روز
باقی ماند تقسم 24 میکنی میشه خارج قسمت میشه ساعت.
همین جوری ادامه میدی تا باقی مانده برسه زیر 60 که میشه این هم ثانیه

امیـرحسین
پنج شنبه 21 آبان 1388, 23:12 عصر
من قبلا یه نمونه ساده واسه کامنتهای وبلاگم نوشتم.
ازخودش یا لاجیکش می تونید استفاده کنید:
<?php
/**
* Time past
* By AHHP ~ Boplo.ir
*/
$inputTime = 1258746502; // Time to check
$o = array();
$t1 = (time() - $inputTime) / 31536000;
$t2 = floor($t1);
$t = $t1 - $t2;

if($t2 > 0)
$o[] = $t2 ." سال";

if($t > 0) {
$t1 = $t * 31536000 / 2592000;
$t2 = floor($t1);
$t = $t1 - $t2;

if($t2 > 0)
$o[] = $t2 ." ماه";

if($t > 0) {
$t1 = $t * 2592000 / 86400;
$t2 = floor($t1);
$t = $t1 - $t2;

if($t2 > 0)
$o[] = $t2 ." روز";

if($t > 0) {
$t1 = $t * 86400 / 3600;
$t2 = floor($t1);
$t = $t1 - $t2;

if($t2 > 0)
$o[] = $t2 ." ساعت";

if($t > 0) {
$t = floor($t * 60);

if($t > 0)
$o[] = $t ." دقیقه";
}
}
}
}
unset($t, $t1, $t2);
return (empty($o) ? "چند لحظه پیش" : join(" و ", $o) . " پیش");
?>
متغیر inputTime$ زمان timestampای هست که باید محاسبه بشه.

موفق باشید

امیـرحسین
جمعه 22 آبان 1388, 00:54 صبح
ببخشید، این کد رو از سایتم کپی/پیست کردم.
توی خط 7 زمان بصورت timestamp از طریق inputTime$ وارد شده.

amirepsilon
جمعه 29 آبان 1388, 22:28 عصر
امیر حسین جان ببخشید ولی کدت مشکل داره!
مثلا این یه نمونه نتیجه است :
39 سال و 10 ماه و 29 روز و 19 ساعت و 12 دقیقه پیش
درواقع ما همچین چیزی نمیخواهیم
ما اینو میخواهیم :
اگر از یک هفته پیش بود خود تاریخ را بیان کند
اگر کمتر از یک هفته بود فقط تعداد روز را بیان کنید : مثلا: 3 روز پیش
اگر کمتر از یک روز بود فقط ساعت را بگوید مثلا 3 ساعت پیش
اگر کمتر از ساعت بود بگوید : چند لحظه پیش
ممنون

امیـرحسین
جمعه 29 آبان 1388, 22:51 عصر
39 سال و 10 ماه خورده ای پیش یعنی سال 1970 یعنی شما متغیر inputTime$ رو مقدار ندادید!
این متغیر باید حاوی timestamp ای باشه که قراره با زمان کنونی مقایسه بشه.

amirepsilon
شنبه 30 آبان 1388, 06:24 صبح
ممنون
ولی اگر تاریخ ما 1386 باشه چی ؟
شروع میکنه از سال و ماه میخونه تا دقیقه؟!

مثلا این :
11 روز و 3 ساعت و 47 دقیقه پیش
من میخوام به این صورت نشون بده :
11 روز پیش

امیـرحسین
شنبه 30 آبان 1388, 14:38 عصر
دوست عزیز شما برنامه نویس هستید. من منطق رو معرفی کردم، دیگه دست خودتونه که چطور تغییرش بدید تا متناسب کارتون بشه. کد رو بخونید، هر طور میخواید تغییرش بدید....