زمان در JavaScript
از شیء Date برای کار کردن با تاریخ و زمان استفاده می شود.
مثال - خودتان امتحان کنید
برگرداندن تاریخ و زمان جاری
چگونه از متد ()Date برای چاپ کردن تاریخ جاری استفاده کنیم
()getFullYear
برگرداندن سال جاری با استفاده از متد ()getFullYear
()getTime
برگرداندن تعداد میلی ثانیه های گذشته از تاریخ 01/01/1970 تا امروز
()setFullYear
چگونه از متد ()setFullYear برای تنظیم یک تاریخ دلخواه استفاده کنیم
()toUTCString
چگونه با استفاده از متد ()toUTCString تاریخ جاری را به یک رشته تبدیل کنیم (بر طبق UTC)
()getDay
چگونه با استفاده از متد ()getDay و یک آرایه، روز جاری را چاپ کنیم
نمایش یک ساعت
چگونه یک ساعت (با ثانیه شمار) را روی صفحه وب نمایش دهیم
مرجع کامل شیء Date
برای مشاهده یک مرجع کامل از خصوصیت ها (Property) و متدهای (Method) مربوط به شیء Date، به لینک زیر مراجعه نمایید:
ایجاد شیء Date
شیء Date، برای کار کردن با تاریخ و زمان استفاده می شود.
شیء Date را می توان با استفاده از constructor یا سازنده ()Date ایجاد نمود.
چهار روش برای اعلان تاریخ وجود دارد:
new Date(milliseconds) //milliseconds since 1970/01/01
new Date(dateString)
new Date(year, month, day, hours, minutes, seconds, milliseconds)
بیشتر پارامترهای بالا اختیاری هستند. در صورت مشخص نشدن، مقدار صفر ارسال خواهد شد.
زمانی که یک شیء Date ایجاد می شود، تعدادی متد (method) برای کار روی آن در دسترس قرار می گیرد. بیشتر این متدها برای تنظیم کردن (set) و یا گرفتن (get) سال، ماه، روز، ساعت، دقیقه، ثانیه و میلی ثانیه است (البته با توجه به تاریخ سیستم و یا زمان جهانی UTC).
تمام محاسبات براساس میلی ثانیه با زمان شروع 00:00:00 01/01/1970 و طبق زمان جهانی (UTC) می باشد. یک روز شامل 86,400,000 میلی ثانیه است.
چند مثال برای اعلان تاریخ:
var d1 = new Date("October 13, 1975 11:13:00")
var d2 = new Date(79,5,24)
var d3 = new Date(79,5,24,11,33,0)
تنظیم (Set) تاریخ
با استفاده از متدهای شیء Date به آسانی می توانید تاریخ را دستکاری کنید.
در مثال زیر، یک تاریخ مشخص (14/01/2010) برای شیء Date تنظیم شده است:
myDate.setFullYear(2010,0,14);
و در مثال زیر، تاریخ 5 روز آینده، برای شیء Date تنظیم شده است:
myDate.setDate(myDate.getDate()+5);
توجه: در مثال بالا، به ازای اضافه شدن 5 روز به تاریخ، ممکن است علاوه بر شیفت داده شدن روز، ماه و یا سال نیز شیفت داده شوند.
مقایسه دو تاریخ مختلف
می توان از شیء Date برای مقایسه دو تاریخ نیز استفاده نمود.
در مثال زیر، تاریخ جاری با تاریخ 14/01/2100 مقایسه شده است:
x.setFullYear(2100,0,14);
var today = new Date();
if (x>today)
{
alert("Today is before 14th January 2100");
}
else
{
alert("Today is after 14th January 2100");
}
- نوشته شده توسط امیر پهلوان صادق
- بازدید: 28673
دیدگاهها
سلام.
اون خطی که دستور setTimeOut استفاده شده رو توضیح دادین که برای تکرار تابع هر 0.5 ثانیه یک بار هست. اما چرا اون رو برابر t قرار دادین؟ هیچ جایی هم از t استفاده نشده. t رو پاک کردم و برنامه باز هم درست اجرا شد. کاربردش چیه؟
function myFunction() {
myVar = setTimeout(func tion(){ alert("Hello") }, 3000);
}
function myStopFunction( ) {
clearTimeout(myVar);
}
به کدهای بالا توجه کنید. اگر تابع اول اجرا شود، پس از سه ثانیه، یک پیغام هشدار نشان داده می شود. اما اگر بخواهیم قبل ازا ین سه ثانیه، تاثیر تابع setTimeout را از بین ببریم، متغیر myVar را در داخل متد clearTimeout مورد استفاده قرار می دهیم.
یعنی اون متغیر t اصولا برای همین کار ایجاد میشه و در فقط مثال این درس دیگه متد clearTimeout استفاده نشده.
بله درسته.
با سلام خدمت اساتید سایت بیاموز.
سوال:
چرا وقتی از کد زیر استفاده میکنم بجای نشان دادن ماه جاری ماه قبل رو نمایش میده؟؟؟؟
با توجه به اینکه تاریخ سیستم رو دقیق تنظیم کردم.
var month=x.getMonth();
document.write(month);
سلام.
زیرا متد getMonth یک مقدار از 0 تا 11 را برمی گرداند. بنابراین برای برج 1 میلادی، مقدار 0 و برای برج 2 میلادی مقدار 1 و الی آخر... برگردانده می شود.
ممنون از توجه و جواب سریعتون.
این شکلی بنویسم به نظر شما استاندارد هستش یا جوره دیگه ای باید نوشته بشه؟
var month=x.getMonth()+1;
ممنونم.
بله به نظر بنده همین روش صحیح می باشد.
درود و ارادت
یه سوال
من می خوام اختلاف دو زمان رو بدست بیارم که یکی از یه متغیر دریافت میشه و یکی دیگه زمان حاله
مثلآ
(2016-06-30 12:37:25) از زمان حال کم بشه و جواب بصورت به ثانیه برگرده که بتونم در یه تایمر ازش استفاده کنم
لطف می کنید اگه راهنمایی کنید
سپاس
با سلام و احترام.
میتونید از نمونه کد زیر استفاده کنید، البته زمان دوم باید زمان حال رو بدید:
var date1 = new Date("7/13/2010");
var date2 = new Date("12/15/2010");
var timeDiff = Math.abs(date2. getTime() - date1.getTime());
var diffDays = Math.ceil(timeD iff / (1000 * 3600 * 24));
alert(diffDays) ;
با سلام میشه لطف کنیو واین کد که برای نمایش ساعت توضیح بدهید؟؟
t=setTimeout(function(){startTime()},500)
با سلام و تشکر.
این خط باعث میشه که تابع ()startTime هر 500 میلیثانیه (هر نیمثانیه) یک بار اجرا بشه.
سلام و عرض ادب
آیا تابعی برای هجری شمسی مثل تابع Date با تمامی پارامترها و متدهایی که Date داره هست یا نه ؟!
من تابع jdate رو از سایت jdf گرفتم اما به زبان php هست و من نیاز به فایل js دارم. ممنون میشم اگه راهنمایی کنید.
با تشکر
با سلام و تشکر از شما.
معمولا برای تاریخ شمسی در جاوااسکریپیت کم استفاده میکنن، ولی اگه کدی برای این زبان نیاز دارید، میتونید از کد زیر استفاده کنید:
<!DOCTYPE html>
<html>
<head>
<title>Shamsi date</title>
<meta charset="u tf-8" />
<script>
week= new Array("يكشنبه", "دوشنبه","سه شنبه","چهارشنبه ","پنج شنبه","جمعه","شنبه")
months = new Array("فروردين","ارديبهشت","خرداد","تير","مرداد","شهريور","مهر","آبان","آذر","دي","بهمن","اسفند");
a = new Date();
d= a.getDay();
day= a.getDate();
month = a.getMonth()+1;
year= a.getYear();
year = (year== 0)?2000:year;
(year<1000)? (year += 1900):true;
year -= ( (month < 3) || ((month == 3) && (day < 21)) )? 622:621;
switch (month) {
case 1: (day<21)? (month=10, day+=10):(month =11, day-=20); break;
case 2: (day<20)? (month=11, day+=11):(month =12, day-=19); break;
case 3: (day<21)? (month=12, day+=9):(month= 1, day-=20); break;
case 4: (day<21)? (month=1, day+=11):(month =2, day-=20); break;
case 5:
case 6: (day<22)? (month-=3, day+=10):(month -=2, day-=21); break;
case 7:
case 8:
case 9: (day<23)? (month-=3, day+=9):(month- =2, day-=22); break;
case 10:(day<23)? (month=7, day+=8):(month= 8, day-=22); break;
case 11:
case 12:(day<22)? (month-=3, day+=9):(month- =2, day-=21); break;
default: break;
}
document.write(" "+week[d]+ " "+day+&quo t; "+months[m onth-1]+" "+ year);
</script>
</head>
<body>
<span style="font-size:9pt;color:#333333;direction:rtl"><script>showdate()</script></span>
</body>
</html>
کل صفحه در قالب html ذخیره شده و شما برای مشاهده نیاز هست، کل کد رو کپی و در یک فایل html ذخیره کنید و سپس اجرا!! نتیجه رو ملاحظه خواهید کرد.
کد موردنیاز مابین تگهای نوشته شده است.
سلام خسته نباشید.
می خواستم بدونم برا بدست آوردن تاریخ شمسی باید چکار کرد؟
ممنون
سلام اگر هدف شما تبدیل تاریخ میلادی به شمسی است باید یک تابع تبدیل بنویسید. که با یک سرچ ساده تو اینترنت می تونید کد مربوطه رو بدست بیارید.
کد زیر تابعی است که این تبدیل رو انجام می دهد و برای 2015/02/28 نیز تاریخ شمسی را در یک پیغام نمایش می دهد:
<html>
<head>
<script>
var g_days=[31,28,3 1,30,31,30,31,3 1,30,31,30,31],
j_days=[31,31,3 1,31,31,31,30,3 0,30,30,30,29];
function gregorianToJala li(g_y, g_m, g_d) {
g_y = parseInt(g_y); g_m = parseInt(g_m);
g_d = parseInt(g_d);
var gy = g_y-1600;
var gm = g_m-1; var gd = g_d-1;
var g_day_no = 365*gy+parseInt ((gy+3) / 4)-parseInt((gy +99)/100)+parse Int((gy+399)/40 0);
for (var i=0; i < gm; ++i) g_day_no += g_days;
if (gm>1 && ((gy%4==0 && gy%100!=0) || (gy%400==0))) ++g_day_no;
g_day_no += gd; var j_day_no = g_day_no-79;
var j_np = parseInt(j_day_ no/ 12053);
j_day_no %= 12053;
var jy = 979+33*j_np+4*parseInt(j_day_ no/1461);
j_day_no %= 1461; if(j_day_no >= 366)
{ jy += parseInt((j_day _no-1)/ 365);
j_day_no = (j_day_no-1)%36 5;
}
for(var i = 0; i < 11 && j_day_no >= j_days; ++i)
j_day_no -= j_days; var jm = i+1;
var jd = j_day_no+1; return [jy,jm,jd];
}
</script>
</head>
<body>
<script>
alert(gregorian ToJalali(2015,0 2,28));
</script>
<br/> <br/> </body>
</html>
سلام و خسته نباشید
تشکر میکنم از سایت مفیدتان
این لینک complete Date object reference پاک شده لطف کنید اگر میشود دوباره لینک جدید بزارید
سلام، ممنون اصلاح شد.