تبدیل Timestamp به Readable Time
با سلام خدمت دوستان و اساتید.
یک سوال کوچیک داشتم،
هیچ راهی برای تبدیل Timestamp به Readable Time در زبان هایی که برای این کار هیچ Functionای وجود نداره هست؟
موقتاً با HTTP Request و PHP این کارو انجام میدم.
دوستان اگر الگوریتمی برای این کار میدونن ممنون میشم.
پاسخ : تبدیل Timestamp به Readable Time
سلام
روی php به راحتی قابل انجام هست
برای چه زبانی مد نظرتون هست ؟
پاسخ : تبدیل Timestamp به Readable Time
نقل قول:
نوشته اصلی توسط
lizard.tiny
سلام
روی php به راحتی قابل انجام هست
برای چه زبانی مد نظرتون هست ؟
بله تا حدودی با همون PHP تا الان این کارو انجام میدادم. الان دنبال الگوریتمی هستم که تابع خودمو بنویسم باهاش.
برای زبان pawn: http://www.compuphase.com/pawn/pawn.htm
پاسخ : تبدیل Timestamp به Readable Time
نقل قول:
نوشته اصلی توسط
TATSERVER.NET
متاسفانه با این زبان آشنایی ندارم
این رو ببینید شاید کمک کنه : http://www.epochconverter.com
پاسخ : تبدیل Timestamp به Readable Time
نقل قول:
نوشته اصلی توسط
lizard.tiny
متسفانه اینجا هم از الگوریتمش توضیحی نداده.
موقتاً دارم از
کد PHP:
<?php echo @date("g:i:s j/n/Y",$_GET['time']); ?>
و ارسال Request برای تبدیل استفاده میکنم که سرعتش خیلی کمه.
دوستان اگر الگوریتمشو میدونید اعلام کنید.
پاسخ : تبدیل Timestamp به Readable Time
از چه نظر سرعتش کمه ؟ میخوایید تعداد زیادی رو تبدیل کنید ؟
پاسخ : تبدیل Timestamp به Readable Time
نقل قول:
نوشته اصلی توسط
lizard.tiny
از چه نظر سرعتش کمه ؟ میخوایید تعداد زیادی رو تبدیل کنید ؟
هم تعداد زیاده، و هم Request ها خیلی زیاد ارسال میشه و ممکنه اون سرور آی پی رو بلاک کنه.
پاسخ : تبدیل Timestamp به Readable Time
نقل قول:
نوشته اصلی توسط
TATSERVER.NET
متسفانه اینجا هم از الگوریتمش توضیحی نداده.
موقتاً دارم از
کد PHP:
<?php echo @date("g:i:s j/n/Y",$_GET['time']); ?>
و ارسال Request برای تبدیل استفاده میکنم که سرعتش خیلی کمه.
دوستان اگر الگوریتمشو میدونید اعلام کنید.
در این کد علامت @ قبل تابع date باعث کاهش سرعت میشه چون این علامت تا اون جا که می دونم قبل از اجرای تابع error_reporting رو برابر با 0 میکنه که اخطاری هم بود نمایش نده بعدش دوباره error_reporting رو به حالت قبل بر می گردونه سر همین موضوع اول هر تابع علامت @ بذارید سرعتش میاد پایین.
بعدش جسارتاً برای تبدیل رشته (String) محتوی تاریخ در PHP نباید همینطوری از اون رشته مستقیم استفاده بشه بلکه باید از تابع پیش فرض PHP برای این کار یعنی strtotime استفاده بشه و بعدش خروجی این تابع strtotime رو به تابع date بدن.
پاسخ : تبدیل Timestamp به Readable Time
نقل قول:
نوشته اصلی توسط
TATSERVER.NET
هم تعداد زیاده، و هم Request ها خیلی زیاد ارسال میشه و ممکنه اون سرور آی پی رو بلاک کنه.
بجای request یک textarea بزار که محتوی POST کنه
توی فایل PHP هم با یه for یا while ساده مشخص کن که کل اطلاعات رو از پست بگیره و بابت هر خط یک بار عملیات تبدیل رو انجام بده و در نهایت یک خروجی بده که همه رو تبدیل کرده
پاسخ : تبدیل Timestamp به Readable Time
کد PHP:
$t=time();
/*
* Transform a Unix Timestamp to ISO 8601 Date format YYYY-MM-DD
* @param unix timestamp
* @return Returns a formated date (YYYY-MM-DD) or false
*/
function unixToIso8601($timestamp){
if($timestamp<0){return false;}//Do not accept negative values
/* Too many constants, add this to a class to speed things up. */
$year=1970;//Unix Epoc begins 1970-01-01
$dayInSeconds=86400;//60secs*60mins*24hours
$daysInYear=365;//Non Leap Year
$daysInLYear=$daysInYear+1;//Leap year
$days=(int)($timestamp/$dayInSeconds);//Days passed since UNIX Epoc
$tmpDays=$days+1;//If passed (timestamp < $dayInSeconds), it will return 0, so add 1
$monthsInDays=array();//Months will be in here ***Taken from the PHP source code***
$month=11;//This will be the returned MONTH NUMBER.
$day;//This will be the returned day number.
while($tmpDays>=$daysInYear){//Start adding years to 1970
$year++;
if(isLeap($year)){
$tmpDays-=$daysInLYear;
}
else{
$tmpDays-=$daysInYear;
}
}
if(isLeap($year)){//The year is a leap year
$tmpDays--;//Remove the extra day
$monthsInDays=array(-1,30,59,90,120,151,181,212,243,273,304,334);
}
else{
$monthsInDays=array(0,31,59,90,120,151,181,212,243,273,304,334);
}
while($month>0){
if($tmpDays>$monthsInDays[$month]){
break;//$month+1 is now the month number.
}
$month--;
}
$day=$tmpDays-$monthsInDays[$month];//Setup the date
$month++;//Increment by one to give the accurate month
return $year.'-'.(($month<10)?'0'.$month:$month).'-'.(($day<10)?'0'.$day:$day);
}
function isLeap($y){
return (($y)%4==0&&(($y)%100!=0||($y)%400==0));
}
echo unixToIso8601($t);