ایجاد: ۹:۰۵ ۱۳۹۱/۶/۶
ویرایش: ۱۲:۲۱ ۱۳۹۲/۱۱/۱۸

یادداشت‌ها

»

بازی با زمان!

برای نمایش و اندازه‌گیری زمان، پلاگین‌های مختلفی نوشته شده که برخی از آنها را در لیست زیر می‌بینید:
  • jquery idletimer plugin
    یک پلاگین جذاب از paul irish (یکی از گسترش‌دهندگان خود jQuery) که می‌تواند زمان بیکار ماندن و رهاشدن صفحه شما را اندازه‌گیری کند!
    این کار هم برای داشتن آمار! و هم بارگزاری اجزای اضافی در وقت بیکاری صفحه و ... می‌تواند کاربرد داشته باشد
  • time ago
    در صفحاتی که زیاد آپدیت می‌شود، معمولا زمان به صورت تفاضلی درج می‌شود یعنی مثلا به صورت «** ثانیه قبل» یا «** دقیقه قبل» و ...
    خب تا اینجای کار که بد نیست. اما مشکل اینجاست که وقتی کاربر چند دقیقه در همان صفحه باقی می‌ماند، لازم است مقدار زمان تفاضلی نیز آپدیت شود و مثلا عبارت «4 دقیقه پیش» بعد از گذشت 1 دقیقه به عبارت «5 دقیقه پیش» تبدیل شود.
    برای این منظور، پلاگین‌های زیادی وجود دارد که timeago یک نمونه جدید و عالی آن است.

نمایش زمان در کلاینت، به کمک زمان دقیق سرور

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

در اینگونه موارد، راه‌کار مناسب این است که در زمان بارگذاری صفحه، زمان دقیق توسط سرور به صفحه اعلام شود و پس از آن، جاوا اسکریپت وظیفه شمردن ثانیه‌ها و آپدیت ساعت را بر عهده بگیرد. برای این منظور کافی است در سمت سرور (و برنامه php) اینگونه نوشته شود:

<?php
echo '
  <div id="time"></div>
  <script>
    var uts = ' . time() . ';
  </script>
  <script src="time.js"></script>
';
حال در فایل جاوا اسکریپت، کافی است که تابعی برای محاسبه ساعت منطقه موردنظر (مثلا ایران) بر اساس unix time stamp تعریف کنیم و سپس هر ثانیه به محاسبه آن بر اساس unix time stamp دریافتی از سرور بپردازیم. یعنی چیزی شبیه این:
//  تابع محاسبه زمان ایران بر اساس زمان یونیکسی
function getIranClock(){
  var dt=new Date(1E3*uts+3.5*36E5), h=dt.getUTCHours(),
    m=dt.getUTCMinutes(), s=dt.getUTCSeconds();
  return h + ':' + ((10>m?'0':'') + m) + ':' + ((10>s?'0':'') + s);
};

//  تابع مربوط به آپدیت زمان
function updateClock(){
  uts++;
  document .getElementById("time") .innerHTML = getIranClock();
}

//  اجرای تابع مربوط به آپدیت زمان در هر ثانیه
setInterval(updateClock, 1000);
اما گاهی ممکن است ساعت سرور نیز غلط باشد یا به هر دلیلی نتوانیم به آن اتکاء کنیم (مثلا اجازه اجرای کد php در سرور را نداشته باشیم) که در اینصورت می‌توانیم با کمک تکنیک jsonP ، ساعت جهانی را حسب unix timestamp ، از سایت‌هایی که API دارند، به دست آوریم و نمایش دهیم. برای مثال:
<script>
uts=0;
function setUTS(r){
    uts = r.request.datetime;
}
</script>
<script src="http://api.open-notify.org/iss-pass.json?lat=1&lon=1&callback=setUTS"></script>
کد اجرا شونده مربوط به موضوعات فوق را در js fiddle ببینید...
یادداشت‌های مرتبط
  1. سرویس های آنلاین رایگان برای نوشتن، تست و بهینه سازی کدهای برنامه نویسی
  2. روش های بهبود کیفیت آپلود فایل ها از طریق فرم های صفحات وب
  3. تشخیص و کشف نوع، نام و مشخصات مرورگر کاربران سایت
  4. قلمرو متغیرها در پی اچ پی و جاوا اسکریپت
  5. دسترسی کامل به عناصر آدرس در جاوا اسکریپت
  6. درباره نود جی اس
  7. افکت های متن با جاوا اسکریپت و جی کوئری
  8. نوار زمان (timeline) ، کاربردها و مثال ها
  9. خطا در جاوا اسکریپت
  10. پایگاه داده در جاوا اسکریپت
  11. روش ها و تکنیک های پنهان کردن ایمیل
  12. زوم (zoom) و بزرگنمایی تصویر و متن با جاوا اسکریپت و پی اچ پی
  13. کشف فونت های نصب شده در کلاینت
  14. کار با تصاویر در سمت کاربر
  15. بهینه سازی آنلاین سی اس اس و جاوا اسکریپت
  16. استفاده از Media Queries ها و اصلاح عدم پشتیبانی IE6-8
  17. چند لینک جامع برای یادگیری جاوا اسکریپت
  18. انواع راه های تولید کد QR با پی اچ پی و جاوا اسکریپت

مدیریت

نام وسیله

اعتبار ورود

نام کاربری

رمز عبور

رمز یکبارمصرف

... لیست تمام یادداشت‌ها

تبلیغات

ربات‌های تلگرامی:
مجموعه ربات‌های تلگرامی ما برای ساده‌تر کردن کار با تلگرام و مدیریت کانال
دامنه‌های فروشی:
دامنه‌های زیر مربوط به ما یا مشتریان ماست که قابل واگذاری هستند. در صورت تمایل به داشتن یکی از آنها، با این اکانت تلگرامی مکاتبه نمایید.

دامنه‌هایی که می‌تواند مصرف تخصصی داشته باشد:
AnyDesk.ir, Firebase.ir, Angularjs.ir, 9px.ir alAdmin.ir, iQore.ir notion.ir, 3dn.ir,

دامنه‌هایی که می‌تواند مصرف فرهنگی/مذهبی داشته باشد:
mavaez.ir, 2aha.ir, babolelm.ir, mahjoor.ir

دامنه‌هایی که می‌تواند مصرف شخصی/عمومی داشته باشد:
azizami.ir, 90blog.ir