-
September 15th, 2016, 15:28
#11
پاسخ : تبدیل Timestamp به Readable Time
pawn در چه سیستم عامل هایی نصب می شود؟ امکان استفاده از کد های دیگر زبان ها وجود ندارد؟ یا اجرای دستورات معقول که در سیستم عامل اجرا می شوند؟
-
-
September 15th, 2016 15:28
# ADS
-
September 15th, 2016, 15:37
#12
پاسخ : تبدیل Timestamp به Readable Time

نوشته اصلی توسط
iHSG
در این کد علامت @ قبل تابع date باعث کاهش سرعت میشه چون این علامت تا اون جا که می دونم قبل از اجرای تابع error_reporting رو برابر با 0 میکنه که اخطاری هم بود نمایش نده بعدش دوباره error_reporting رو به حالت قبل بر می گردونه سر همین موضوع اول هر تابع علامت @ بذارید سرعتش میاد پایین.
بعدش جسارتاً برای تبدیل رشته (String) محتوی تاریخ در PHP نباید همینطوری از اون رشته مستقیم استفاده بشه بلکه باید از تابع پیش فرض PHP برای این کار یعنی strtotime استفاده بشه و بعدش خروجی این تابع strtotime رو به تابع date بدن.
به صورت موقتاً اون کد رو گذاشتم تا الگوریتمشو پیدا کنم. بعد من Timestamp رو میخوام تبدیل کنم نه بلعکس، (توضیحات تابع: English textual datetime description into a Unix timestamp)

نوشته اصلی توسط
lizard.tiny
بجای request یک textarea بزار که محتوی POST کنه
توی فایل PHP هم با یه for یا while ساده مشخص کن که کل اطلاعات رو از پست بگیره و بابت هر خط یک بار عملیات تبدیل رو انجام بده و در نهایت یک خروجی بده که همه رو تبدیل کرده
مشکل اینه که کل اطلاعات رو ندارم، از سمت کلاینت اطلاعات میاد که همون موقع باید پردازش بشه.

نوشته اصلی توسط
T.Toosi
کد 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);
بسیار ممنون الان تبدیلش میکنم و تستش میکنم.

نوشته اصلی توسط
Yas-Host
pawn در چه سیستم عامل هایی نصب می شود؟ امکان استفاده از کد های دیگر زبان ها وجود ندارد؟ یا اجرای دستورات معقول که در سیستم عامل اجرا می شوند؟
در تمام سیستم عامل ها اجرا میشه ولی متسفانه زبان Scripting یک نرم افزار هست و دسترسی به اجرای دستورات سیستم عامل نداره.
-
-
September 15th, 2016, 15:40
#13
عضو انجمن
پاسخ : تبدیل Timestamp به Readable Time

نوشته اصلی توسط
tatserver.net
مشکل اینه که کل اطلاعات رو ندارم، از سمت کلاینت اطلاعات میاد که همون موقع باید پردازش بشه.
اگه از سمت کلاینت میاد و اون فایل php شبیه به یک سیستم api عمل میکنه بهتره دریافت و خروجی فایل php بصورت json یا xml باشه هم استانداردتر هست هم سرعت بهتری خواهی داشت
در کل اصولی تر هست
-
تعداد تشکر ها از lizard.tiny به دلیل پست مفید
-
September 15th, 2016, 16:05
#14
پاسخ : تبدیل Timestamp به Readable Time

نوشته اصلی توسط
T.Toosi
کد 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);
تابعی که تبدیلش کردم به همون زبان:
خروجی Day و Month صحیح هست ولی Year رو 46 نشون میده!
ویرایش توسط TATSERVER.NET : September 15th, 2016 در ساعت 16:22
-
-
September 15th, 2016, 16:11
#15
عضو دائم
پاسخ : تبدیل Timestamp به Readable Time
کد:
$year=1970;//Unix Epoc begins 1970-01-01
مقدار دهی کردید ؟
-
تعداد تشکر ها از T.Toosi به دلیل پست مفید
-
September 15th, 2016, 16:12
#16
پاسخ : تبدیل Timestamp به Readable Time

نوشته اصلی توسط
t.toosi
کد:
$year=1970;//unix epoc begins 1970-01-01
مقدار دهی کردید ؟
اوه حواسم نبوده یادم رفته 
بسیار ممنون از کمکتون، درست شد!
-
-
September 15th, 2016, 16:25
#17
عضو انجمن
پاسخ : تبدیل Timestamp به Readable Time
ویرایش توسط lizard.tiny : September 15th, 2016 در ساعت 16:27
-
تعداد تشکر ها از lizard.tiny به دلیل پست مفید
-
September 15th, 2016, 16:30
#18
پاسخ : تبدیل Timestamp به Readable Time

نوشته اصلی توسط
lizard.tiny
ممنون از کمکتون ولی با اون تابعی که دوست عزیز T.Toosi ارائه دادند روی خود سیستم تبدیل رو انجام میدم.
-