PDA

View Full Version : سوال: ساعت متحرک سمت سروری



h.alizadeh
یک شنبه 05 آبان 1387, 00:14 صبح
سلام،
من یک قطعه کد برای نمایش ساعت بصورت متحرک میخوام که ساعت سرور رونشون بده.
خودم کدجاواسکریپت رو دارم ولی خب جاواس و کلاینت! یعنی ساعت سمت کاربر رو نشون میده و اگه ساعت کاربر اشتباه باشه ؛ ساعت سایت هم براش اشتباه نشون داده میشه که جالب نیست...
در ضمیمه فایل ساعت کلاینتم روقرار میدم .
میشه کسی منو کمک کنه میخوام ساعت سرور نمایش داده شه...
با تشکر از دوستان

Chabok
یک شنبه 05 آبان 1387, 12:45 عصر
با سلام

شما می توانید هنگام شروع از ساعت سرور استفاده کنید و مرتبا به اون مقدار اضافه کنید .

فقط تئوری کار رو عرض میکنم . پیاده سازیش با خود شما .
مثلا کد جاوا اسکریپت شما بصورت زیر باشد :


var StartTime = <%=DateTime.Now.ToString()%>روش پیاده سازی با خود شما . موفق باشید .

Neo Persian
یک شنبه 05 آبان 1387, 14:05 عصر
روش كلي گفته شد ولي اين روش يه مشكلي داره و اون اينكه در حد چند ثانيه شايدم چند صدم ثانيه ساعت عقب هستش

h.alizadeh
یک شنبه 05 آبان 1387, 22:15 عصر
ممنون،
من جاواسکریپت چندان کار نکردم.
الان کد رو اینطوری کردم (اون قسمت بنفش)
خب الآن چطوری خودم بهش مقدار اضافه کنم؟!
الان ساعت رو ثابت نشون میده .



<script type ="text/javascript" language="JavaScript">
<!-- hiding
function MakeArrayday(size) {
this.length = size;
for(var i = 1; i <= size; i++) {
this[i] = "";
}
return this;
}
function MakeArraymonth(size) {
this.length = size;
for(var i = 1; i <= size; i++) {
this[i] = "";
}
return this;
}
function funClock() {
if (!document.layers && !document.all)
return;
var runTime = new Date();
var hours = <%=DateTime.Now.Hour.ToString()%> ;
var minutes = <%=DateTime.Now.Minute .ToString()%>;
var seconds = <%=DateTime.Now.Second .ToString()%>;
var dn = "قبل از ظهر";
if (hours >= 12) {
dn = "بعد از ظهر";
hours = hours - 12;
}
if (hours == 0) {
hours = 12;
}
if (minutes <= 9) {
minutes = "0" + minutes;
}
if (seconds <= 9) {
seconds = "0" + seconds;
}
movingtime = "<b>"+ hours + ":" + minutes + ":" + seconds + " " + dn + "</b>";
if (document.layers) {
document.layers.clock.document.write(movingtime);
document.layers.clock.document.close();
}
else if (document.all) {
clock.innerHTML = movingtime;
}
setTimeout("funClock()", 1000)
}
window.onload = funClock;
// End -->
</script>

milade
دوشنبه 06 آبان 1387, 04:49 صبح
سلام ,
ببین شما با همون ساعت ها رو در هنگام لود بگیر و بریز توی لیبل
حالا با جاوا بهشون +1 اد کن
موفق باشی!
______________________
با جاوا و اپ پنل هم می تونیا

mostafa_sgh
سه شنبه 07 آبان 1387, 00:14 صبح
سلام به دوست گل خودم و همچنین سلام به دوستان گرامی

اینم یه نمونه که برا شرایط شما آماده کردم .

شاید کد یه خورده ضعیف باشه ولی ارزششو داره .....

توضیح : کد زیر را داخل تگ Body قرار دهید .



<span id="clock">00:00:00</span>
<script type="text/javascript">
var sec = <%= DateTime.Now.Second %>;
var min = <%= DateTime.Now.Minute %>;
var hor = <%= DateTime.Now.Hour %>;
var dn = (hor > 11)? 'PM' : 'AM';
if(hor > 12) hor = hor - 12 ;
function Clock(){
sec ++;
if(sec > 59){
min ++;
sec = 0;
if(min > 59){
hor ++;
min = 0;
if(hor > 12) hor = 1;

if(hor > 11){
if(dn == 'PM') hor = 0;
switch(dn){
case'AM':
dn = 'PM';
break;
case'PM':
dn = 'AM';
break;
}
}
}
}

clock.innerText = ((hor < 10)? '0'+ hor : hor) + ':' +
((min < 10)? '0'+ min : min) + ':' +
((sec < 10)? '0' + sec : sec) + ' ' + dn;
setTimeout("Clock()",1000);
}
Clock();
</script>

h.alizadeh
سه شنبه 07 آبان 1387, 10:11 صبح
با سلام و تشکر از دوست عزیز
ممنونم ولی چک کردم هیچی نمایش نمیده !

raravaice
سه شنبه 07 آبان 1387, 11:01 صبح
function g(id){return document.getElementById(id);}
var s=5;
var m=2;
var h=14;
function DigitalClock (IsHour,IsMinute,IsSecond){
s++;
if(s>=60){s =-(60-s);m=parseInt(m)+1;}
if(m>=60){m =-(60-m);h=parseInt(h)+1;}
if(h>=24){h =-(24-h);}
if(s<=9){ts="0"+s;}else{ts=s;}
if(m<=9){tm="0"+m;}else{tm=m;}
if(h<=9){th="0"+h;}else{th=h;}
this.Hour=th;
this.Minute=tm;
this.Second=ts;
if (IsHour){g("DClock").innerHTML=th;}
if (IsMinute){g("DClock").innerHTML +=":"+tm;}
if (IsSecond){g("DClock").innerHTML +=":"+ts;}
setTimeout("DigitalClock("+IsHour+","+IsMinute+","+IsSecond+")",1000);
};

</script>
</head>
<body onload="DigitalClock(true,true,true)">
.
.
.
<div id="DClock">00:00:00</div>
.
.
بر حسب یکی از نیاز های خودم نوشته شده، انعطافش بده که نیازت رو بر طرف کنه

موفق باشید

maryam4
سه شنبه 07 آبان 1387, 18:56 عصر
چرا برای ایجاد ساعت سمت سروری از توابع خودAsp.net استفاده نمی کنید .
با استفاده از تکنولوژِی Ajax وتوابع خود Asp.net براحتی می تونید ساعت سمت سروری (فارسی) که هر ثانیه update می شه رو داشته باشی .
اگه نمی خواهید که حتما از JavaScriptاستفاده کنید بگید تا براتون نمونه کد بگذارم.

raravaice
سه شنبه 07 آبان 1387, 19:00 عصر
چرا برای ایجاد ساعت سمت سروری از توابع خودAsp.net استفاده نمی کنید .
با استفاده از تکنولوژِی Ajax وتوابع خود Asp.net براحتی می تونید ساعت سمت سروری (فارسی) که هر ثانیه update می شه رو داشته باشی .
اگه نمی خواهید که حتما از JavaScriptاستفاده کنید بگید تا براتون نمونه کد بگذارم.

این یه جور ولخرجی در پروسس هست، استفاده از Ajax برای ساعت!

موفق باشید

h.alizadeh
پنج شنبه 09 آبان 1387, 10:12 صبح
سلام مرسی ممنون

میگم خب با این روش اگه ساعت سرور درست تنظیم نشده باشه ساعت رو اشتباه نشون میده.
میگم راهی دیگه ای همه هست برای اینکه ساعت صحیح کشور رو بدست بیاریم ؟؟یعنی وابسته به تنظیم ساعت سرور و کلاینت اینا نباشه...؟

الان مثلا این ساعت زمان ارسال پستها توی همین انجمن چجوری ساعت رو بدست مییارند..؟
من توی برنامه م که میخواسم زمان ارسال پستها رو بدست بیارم از ساعت سرور استفاده کردم...!

raravaice
پنج شنبه 09 آبان 1387, 11:18 صبح
اگر سروری ساعتش درست نباشه که باید خدا به کاربر های اون سرور رحم کنه.;)
مثل شرکت محترم فرا هاست که 1 سال تمام با همین نقایص بنده رو عذاب داد. "انتقاد"

---------------------
معمولا ساعت و تاریخ سرور بر اساس یک Time Zone مشخص تنظیم شده که شما با اطلاع از اون Time Zone میتونید اختلاف ساعت منطقه کاری تون رو به دست بیارید.

موفق باشید

mostafa_sgh
پنج شنبه 09 آبان 1387, 13:50 عصر
سلام به رفقا


این مشکل رو اکثر هاستینگ ها باهاش در گیر هستند . ولی اینطوریم نیست که حل نشه ...

شما برای اینکار ابتدا میزان اختلاف ساعت سرور رو با ساعت ایران بدست بیاورید و سپس این مقدار رو از ساعت فعلی کم یا زیاد کنید.

معمولاً هاستینگ هائی که در کانادا هستند 8 ساعت و 27 دقیقه با ساعت ایران اختلاف دارند .

کافیه یک کلاس با یه Property تعریف کنی واین مقدار رو اصلاح کرده و تو کارات از اون استفاده کنی ....



public class CDateTime
{
public static DateTime Now
{
get
{
DateTime dt = new DateTime();
dt = dt.AddHours(8).AddMinutes(27);
return dt;
}
}
}




var hor = <%# CDateTime.Now.Hour %>;
var min = <%# CDateTime.Now.Minute %>;
var sec = <%# CDateTime.Now.Second %>;

h.alizadeh
پنج شنبه 09 آبان 1387, 22:54 عصر
سلام ممنونم ازتون

مخصوصا کدهای mostafa_sgh واقعاً جالب بود.

من هاستم پلسک هست...

الان توی سایتم http://www.matiba-kh.ir/homepage.aspx
اون بالا یک ساعت می بینید اونو با استفاده از کدهای صفحه قبل نوشتم
ولی ساعت رو درست نشون نداده فکر میکنم ساعت سرور درست تنظیم نشده که اینطوری ه ...

(هنوز به پشتیبانی زنگ نزدم!)

بعد همینجوری این سؤال به ذهنم رسید و پرسیدم.
منظورم هم این بود که اگه کلا سرور ساعتش رو دقیق تنظیم نکرده باشه ما میتونیم کلا ساعت صحیح رو بدست بیاریم یا نه؟!

mostafa_sgh
پنج شنبه 09 آبان 1387, 23:59 عصر
خیر دوست عزیز

اون کد ساعت سرور رو به ما میده .

برای ساعت دقیق محلی هم می تونید طبق روش بالا عمل کنید.