چگونه یک سال بعد را در جاوااسکریپت تعیین کنیم
من دارم تلاش میکنم تاریخ یک سال آینده را بدست بیاورم و این کار نمیکند.
JS :
var now = new Date();
var oneYr = new Date();
oneYr.setYear(now.getYear() + 1);
$("#yearFromNow").append(oneYr.toString());
var oneMonth = new Date();
oneMonth.setMonth(now.getMonth() + 1);
$("#monthFromNow").append(oneMonth.toString());
خروجی :
one mo. = Thu Dec 22 112 15:16:01 GMT-0500 (Eastern Standard Time)
one yr. = Sun Jan 22 2012 15:16:01 GMT-0500 (Eastern Standard Time)
سال Dec 22 112 است - ?? ماه به درستی Jan 22 2012 نمایش داده میشود.
اگر میخواهید با آن دستکاری کنید، http://jsbin.com/alezaj/edit#javascript,html,live. این در کروم و فایرفاکس است.
متشکرم!
پاسخ شماره ۱
این با تنها یک خط، یک Date درست یک سال آینده ایجاد میکند. اول، fullYear را از یک new Date میگیریم، آن را افزایش میدهیم، و آن را به عنوان سال یک new Date تنظیم میکنیم. ممکن است فکر کنید که کار تمام است، اما اگر متوقف شویم، یک timestamp برمیگرداند، نه یک شیء Date، بنابراین کل آن را در یک سازنده Date قرار میدهیم.
new Date(new Date().setFullYear(new Date().getFullYear() + 1))
پاسخ شماره ۲
شما باید از getFullYear() به جای getYear() استفاده کنید. getYear() سال واقعی منهای ۱۹۰۰ را برمیگرداند (و بنابراین تا حد زیادی بیفایده است).
بنابراین تاریخی که دقیقاً یک سال پس از لحظه کنونی را نشان دهد، خواهد بود:
var oneYearFromNow = new Date();
oneYearFromNow.setFullYear(oneYearFromNow.getFullYear() + 1);
توجه داشته باشید که اگر این کار را در ۲۹ فوریه انجام دهید، تاریخ تنظیم خواهد شد.
به همین ترتیب، شما میتوانید یک تاریخ که یک ماه بعد است را از طریق getMonth() و setMonth() دریافت کنید. لازم نیست نگران «گذشتن» از سال جاری به سال بعد باشید اگر این کار را در دسامبر انجام دهید؛ تاریخ بهطور خودکار تنظیم خواهد شد. همین مورد برای روز ماه از طریق getDate() و setDate() نیز صدق میکند.
پاسخ شماره ۳
چون setYear() منسوخ شده است، نسخهی صحیح آن این است:
// plus 1 year
new Date().setFullYear(new Date().getFullYear() + 1)
// plus 1 month
new Date().setMonth(new Date().getMonth() + 1)
// plus 1 day
new Date().setDate(new Date().getDate() + 1)
تمام مثالها زمان یونیکس را باز میگردانند، اگر میخواهید شیء Date دریافت کنید - فقط آن را با new Date(...) دیگری بپوشانید
