PDA

View Full Version : سوال: کد php برای قرار دادن ساعت در سایت



mahdi.iqu
سه شنبه 06 فروردین 1392, 12:37 عصر
با سلام
کدی(PHP) برای قرار دادن ساعت در سایت وجود داره؟
مثلا من یه دایو ایجاد کردم دوست دارم تو اون ساعت دقیق رو نشون بده به شکل زی
00:47:43
ممنون میشم کمکم کنید

SadeghPro19
سه شنبه 06 فروردین 1392, 15:24 عصر
با کد زیر میتوندی اینکار رو انجام بدین اما برای اینکه زمانش متحرک باشه باید مرتبا صفحه رو رفرش کنید یا از طریق آجکس اینکار رو انجام بدین..

echo date('h:i:s');

T.R.G.T
سه شنبه 06 فروردین 1392, 15:34 عصر
شما میتونید با استفاده از جاوا اسکریپت از سرور ساعت رو بگیرید بعد با استفاده از اون بدون رفرش ساعت رو آپدیت کنید

redhat2
سه شنبه 06 فروردین 1392, 21:13 عصر
شما میتونید با استفاده از جاوا اسکریپت از سرور ساعت رو بگیرید بعد با استفاده از اون بدون رفرش ساعت رو آپدیت کنید
خاهشا میشه یه مثال بزنید .؟

redhat2
سه شنبه 06 فروردین 1392, 22:18 عصر
البته اینجا جاش نیست ولی به هر حال :
یه فایل Css ایجاد کنید و یک آیدی به نام clock بسازید ، در ادامه یه فایل به نام jquery ایجاد کنید و در صفحه ی php مثلا در صفحه ی index.php این فایل jquery و فایل اصلی jquery که باید از سایت گرفت را با تگ کنید ، بعد اینا را در فایل jquery وارد کنید :



function updateClock()
{
var currenttime = new Date();
var currentHours = currenttime.getHours();
var currentMinutes = currenttime.getMinutes();
var currentSeconds = currenttime.getSeconds();
currentMinutes = ( currentMinutes < 10 ? "0" : "" ) + currentMinutes;
currentSeconds = ( currentSeconds < 10 ? "0" : "" ) + currentSeconds;
var timeOfDay = ( currentHours < 12 ) ? "قبل از ظهر" : "بعد از ظهر";
// Convert the hours component to 12-hour format if needed
currentHours = ( currentHours > 12 ) ? currentHours - 12 : currentHours;

// Convert an hours component of "0" to "12"
currentHours = ( currentHours == 0 ) ? 12 : currentHours;

// Compose the string for display
var currentTimeString = currentHours + ":" + currentMinutes + ":" + currentSeconds + " " + timeOfDay;


$("#clock").html(currentTimeString);
}

$(document).ready(function()
{
setInterval('updateClock()',10);
});

بعد این را در صفحه ی php وارد کنید :



<div id="clock"></div>

صفحه ی index.php را load کنید .

MMSHFE
سه شنبه 06 فروردین 1392, 22:31 عصر
البته این کد داره ساعت کلاینت رو نشون میده. اگه ساعت سرور رو بخواین، باید از AJAX استفاده کنید. یک مثال براتون ضمیمه کردم.

mahdi.iqu
دوشنبه 12 فروردین 1392, 08:33 صبح
تشکر از دوستان
من از این کد استفاده کردم:


echo date('h:i:s');


مشکلی که اینجا هست الان من تو لوکال هستم ساعت غیر واقعی نشون میده مگه توی لوکال نباید از خود سیستم بخونه پس ساعتی که نشون میده با ساعت سیستم من یکی نیست!
میشه یه راه حلی قرار بدید؟

eshpilen
دوشنبه 12 فروردین 1392, 11:03 صبح
البته این کد داره ساعت کلاینت رو نشون میده. اگه ساعت سرور رو بخواین، باید از AJAX استفاده کنید. یک مثال براتون ضمیمه کردم.
اصلا جالب نیست که بخاطر یه چیز کم ارزشی مثل نمایش ساعت، هر ثانیه یک درخواست ایجکس به سرور ارسال کنیم.
کلاینت که خودش ساعت داره. اگر هم بخوایم ساعت سرور رو نشون بده میتونیم از روشهای بهینه تری استفاده کنیم.
مثلا میتونیم ساعت رو در اولین درخواست، از سمت سرور ست کنیم، بعد در سمت کلاینت با جاوااسکریپت و استفاده از setTimeout، هر یک ثانیه زمان رو اضافه میکنیم، یعنی به سرور درخواستی ارسال نمیشه و از همون تایمر جاوااسکریپت برای آپدیت ساعت استفاده میکنیم؛ البته مثلا هر 30 ثانیه یک درخواست ایجکس هم به سرور ارسال میکنیم تا اگر ساعت ما از زمان دقیق منحرف شده (بنظرم امکانش هست)، اون رو آپدیت/اصلاح کنیم.

البته همون درخواست که از سرور به کلاینت ارسال میشه گاهی ممکنه به عللی با چند ثانیه تاخیر به دست مرورگر برسه، و بنابراین ساعت ما چندان هم دقیق نباشه. حتی کد جاوااسکریپت سمت کلاینت هم بعللی (مثل لود سنگین مرورگر و نیمه هنگ شدنش) ممکنه از زمان دقیق دچار انحراف بشه.

یک کار دیگه هم بنظرم میرسه و اون اینکه اول بیایم و اختلاف ساعت کلاینت رو با ساعت سرور اندازه گیری کنیم، بعد سمت کلاینت با کم یا زیاد کردن اون مقدار از ساعت خود کلاینت، ساعت سرور رو نمایش بدیم.
البته اگر در این بین کاربر ساعت سیستم خودش رو تغییر بده، ساعت ما اشتباه میشه.

بهرحال درکل بنظر بنده ارسال یک درخواست ایجکس در هر ثانیه به سرور برای کار کم اهمیتی مثل نمایش ساعت که نیاز به دقت بالا هم نداره، اصلا حرفه ای نیست.

Unique
دوشنبه 12 فروردین 1392, 14:02 عصر
من نمیدونم نمایش ساعت Server چه ارزشی داره ! معمولا برای count down ها از یک فیلد در database استفاده میکنند و با گرفت اون و استفاده از setTimeout یا setInterval زمان را countdown میکنند برای ساعت هم میشه همچین کاری کرد اما قطعا چند ثانیه عقب میفته مگه اینکه اختلاف ساعت local با server را بدست بیاریم و ساعت را روی کلاینت +‌ اختلاف نشون بدیم و update کنیم با setInterval.


البته مثلا هر 30 ثانیه یک درخواست ایجکس هم به سرور ارسال میکنیم تا اگر ساعت ما از زمان دقیق منحرف شده (بنظرم امکانش هست)، اون رو آپدیت/اصلاح کنیم.
مثلا چه اتفاقی ممکنه بیفته ؟

2undercover
دوشنبه 12 فروردین 1392, 19:28 عصر
مثلا چه اتفاقی ممکنه بیفته ؟

مثلا اگر یک پنجره ی Alert باز باشه هیچ کد جاوااسکریپتی اجرا نمیشه!

Unique
سه شنبه 13 فروردین 1392, 00:45 صبح
چک نکردم و مطمئن نیستم اینجور باشه که میگین ، اما قابل جلوگیری هستش ! الان هم معمولا از modal box های شبیه simplemodal و غیره استفاده میشه و کمتر کسی alert و confirm میکنه !

mahdi.iqu
سه شنبه 13 فروردین 1392, 22:26 عصر
همه به جواباشون رسیدند الا ما....:D
دوستان لطفا پست 7 رو هم جواب بدید
تشکر

eshpilen
سه شنبه 13 فروردین 1392, 22:35 عصر
تشکر از دوستان
من از این کد استفاده کردم:


echo date('h:i:s');


مشکلی که اینجا هست الان من تو لوکال هستم ساعت غیر واقعی نشون میده مگه توی لوکال نباید از خود سیستم بخونه پس ساعتی که نشون میده با ساعت سیستم من یکی نیست!
میشه یه راه حلی قرار بدید؟
احتمالا بخاطر Time zone پیشفرض است.

mahdi.iqu
چهارشنبه 14 فروردین 1392, 07:56 صبح
Time zone پیشفرض چی هست؟

2undercover
چهارشنبه 14 فروردین 1392, 09:56 صبح
منطقه زمانی پیش فرض روی UTC هست که 4:30 با ما اختلاف داره برای تنظیم منطقه زمانی روی تهران می تونید از تابع زیر استفاده کنید:


date_default_timezone_set('Asia/Tehran');


برای این هم که ببینید منطقه زمانی روی چه چیزی تنظیم شده هم می تونید از تابع زیر استفاده کنید:



date_default_timezone_get();

FastCode
چهارشنبه 14 فروردین 1392, 10:14 صبح
منطقه زمانی پیش فرض روی UTC هست که 4:30 با ما اختلاف داره برای تنظیم منطقه زمانی روی تهران می تونید از تابع زیر استفاده کنید:


date_default_timezone_set('Asia/Tehran');


برای این هم که ببینید منطقه زمانی روی چه چیزی تنظیم شده هم می تونید از تابع زیر استفاده کنید:



date_default_timezone_get();

کدتون کاملا درسته ولی اختلاف ۴:۳۰ الان باعث نمیشه این اختلاف همیشه ۴:۳۰ باشه.
این اختلاف اصطلاحا 3:30/4:30 هست

mahdi.iqu
پنج شنبه 15 فروردین 1392, 23:24 عصر
دوستان من این کد رو کجا اصلا باید بزنم؟