View Full Version : اشکال عجیب در مقایسه بین دو تاریخ
تبسم ساینا
شنبه 25 مرداد 1393, 13:30 عصر
سلام دوستان , من این دو تا تاریخ رو به ان صورت اختلاف شون رو میگیرم ولی جواب اشتباه میده:
date_default_timezone_set('Asia/Tehran');
$date=date('Y-m-d H:i:s');
$diff = strtotime("2014-08-16 12:51:31") - strtotime("2014-08-16 10:00:00");
$chap= date("H:i", $diff);
echo $chap;
باید جواب بده 02:51 ولی میزنه 06:21!!!
دلیلش چیه واقعا؟؟
bagherok
شنبه 25 مرداد 1393, 14:27 عصر
کجاش عجیبه !!
خوب03:30 اختلاف زمانی ماست با گرونیج ...
timezone رو GMT بذارید درست میشه
date_default_timezone_set('GMT');
یا
خودتون 3 ساعت و نیم کم کنید
echo date("H:i", $diff-(3.5*60*60));
Unique
شنبه 25 مرداد 1393, 14:29 عصر
دلیلش اینه که وقتی شما پارامتر دوم strtotime را نمیدین ! php از تابع time استفاده میکنه که timestamp را به UTC میده. بعدش که شما اختلاف را به UTC محاسبه میکنید ! از تابع date میخواین که اون اختلاف timestamp به UTC را به زمان تهران بهتون بده ! خوب تهران ۳:۳۰ از UTC جلوتره و بهتون 6:21 میده !
زمانی که از توابع تاریخ و زمان استفاده میکنین باید دقیقا بدونین دارین چیکار میکنین.
تبسم ساینا
شنبه 25 مرداد 1393, 20:27 عصر
ممنونم دوستان.. من نمیدونستم اینا رو.
تبسم ساینا
شنبه 25 مرداد 1393, 20:41 عصر
البته من تایم زون رو GMT کردم ولی درست نشد !!
فک کنم مجبورباشم از اون کد دستی استفاده کنم.
bagherok
شنبه 25 مرداد 1393, 20:56 عصر
البته من تایم زون رو GMT کردم ولی درست نشد !!
فک کنم مجبورباشم از اون کد دستی استفاده کنم.
یعنی کد زیر جواب نمیده!!
<?php
date_default_timezone_set('GMT');
$date=date('Y-m-d H:i:s');
$diff = strtotime("2014-08-16 12:51:31") - strtotime("2014-08-16 10:00:00");
$chap= date("H:i", $diff);
echo $chap;
وقتی تایم زون رو گرنویج میذارید اختلاف زمانی یعنی صفر
تبسم ساینا
شنبه 25 مرداد 1393, 22:04 عصر
در مورد اون کد جواب داد, مشکل من سر این کده که قراره اختلاف با زمان جاری محاسبه بشه . اگه اینجوری بنویسم اشتباه میده 6 ساعت جلوتر میده.
date_default_timezone_set('GMT');
$date=date('Y-m-d H:i:s');
$diff = strtotime($date) - strtotime("2014-08-16 10:00:00");
echo date("H:i");
مثلا میده :17:05
ولی اگه اینطوری بنویسم درست میده جوابو:
date_default_timezone_set('Asia/Tehran');
$date=date('Y-m-d H:i:s');
$diff = strtotime($date) - strtotime("2014-08-16 10:00:00");
echo date("H:i",$diff-(3.5*60*60));
مینویسه :11:34
bagherok
شنبه 25 مرداد 1393, 23:45 عصر
<?php
date_default_timezone_set('GMT');
echo 'GMT <br />Now Date ' .date('Y-m-d H:i:s'). ' - 2014-08-16 18:00:00 =';
echo date("H:i",strtotime(date('Y-m-d H:i:s'))-strtotime("2014-08-16 18:00:00")).'<br />';
echo '<hr />';
date_default_timezone_set('asia/tehran');
echo 'Tehran <br />Now Date ' .date('Y-m-d H:i:s'). ' - 2014-08-16 18:00:00 =';
echo date("H:i",strtotime("-210 minutes",strtotime(date('Y-m-d H:i:s')))-strtotime("2014-08-16 18:00:00"));
?>
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.