-
September 15th, 2016, 14:58
#1
تبدیل Timestamp به Readable Time
با سلام خدمت دوستان و اساتید.
یک سوال کوچیک داشتم،
هیچ راهی برای تبدیل Timestamp به Readable Time در زبان هایی که برای این کار هیچ Functionای وجود نداره هست؟
موقتاً با HTTP Request و PHP این کارو انجام میدم.
دوستان اگر الگوریتمی برای این کار میدونن ممنون میشم.
-
-
September 15th, 2016 14:58
# ADS
-
September 15th, 2016, 15:02
#2
عضو انجمن
پاسخ : تبدیل Timestamp به Readable Time
سلام
روی php به راحتی قابل انجام هست
برای چه زبانی مد نظرتون هست ؟
-
تعداد تشکر ها از lizard.tiny به دلیل پست مفید
-
September 15th, 2016, 15:03
#3
پاسخ : تبدیل Timestamp به Readable Time

نوشته اصلی توسط
lizard.tiny
سلام
روی php به راحتی قابل انجام هست
برای چه زبانی مد نظرتون هست ؟
بله تا حدودی با همون PHP تا الان این کارو انجام میدادم. الان دنبال الگوریتمی هستم که تابع خودمو بنویسم باهاش.
برای زبان pawn: http://www.compuphase.com/pawn/pawn.htm
-
-
September 15th, 2016, 15:09
#4
عضو انجمن
پاسخ : تبدیل Timestamp به Readable Time

نوشته اصلی توسط
TATSERVER.NET
متاسفانه با این زبان آشنایی ندارم
این رو ببینید شاید کمک کنه : http://www.epochconverter.com
-
تعداد تشکر ها از lizard.tiny به دلیل پست مفید
-
September 15th, 2016, 15:12
#5
پاسخ : تبدیل Timestamp به Readable Time

نوشته اصلی توسط
lizard.tiny
متسفانه اینجا هم از الگوریتمش توضیحی نداده.
موقتاً دارم از
کد PHP:
<?php echo @date("g:i:s j/n/Y",$_GET['time']); ?>
و ارسال Request برای تبدیل استفاده میکنم که سرعتش خیلی کمه.
دوستان اگر الگوریتمشو میدونید اعلام کنید.
-
-
September 15th, 2016, 15:16
#6
عضو انجمن
پاسخ : تبدیل Timestamp به Readable Time
از چه نظر سرعتش کمه ؟ میخوایید تعداد زیادی رو تبدیل کنید ؟
-
تعداد تشکر ها از lizard.tiny به دلیل پست مفید
-
September 15th, 2016, 15:18
#7
پاسخ : تبدیل Timestamp به Readable Time

نوشته اصلی توسط
lizard.tiny
از چه نظر سرعتش کمه ؟ میخوایید تعداد زیادی رو تبدیل کنید ؟
هم تعداد زیاده، و هم Request ها خیلی زیاد ارسال میشه و ممکنه اون سرور آی پی رو بلاک کنه.
-
-
September 15th, 2016, 15:20
#8
پاسخ : تبدیل 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 بدن.
-
تعداد تشکر ها از iHSG به دلیل پست مفید
-
September 15th, 2016, 15:21
#9
عضو انجمن
پاسخ : تبدیل Timestamp به Readable Time

نوشته اصلی توسط
TATSERVER.NET
هم تعداد زیاده، و هم Request ها خیلی زیاد ارسال میشه و ممکنه اون سرور آی پی رو بلاک کنه.
بجای request یک textarea بزار که محتوی POST کنه
توی فایل PHP هم با یه for یا while ساده مشخص کن که کل اطلاعات رو از پست بگیره و بابت هر خط یک بار عملیات تبدیل رو انجام بده و در نهایت یک خروجی بده که همه رو تبدیل کرده
-
تعداد تشکر ها از lizard.tiny به دلیل پست مفید
-
September 15th, 2016, 15:26
#10
عضو دائم
پاسخ : تبدیل 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);
-
تعداد تشکر ها ازT.Toosi به دلیل پست مفید