我想让用户使用 JavaScript 轻松添加和减去日期,以便按日期浏览他们的条目。
日期格式为:“mm/dd/yyyy”。我希望他们能够点击“下一步”按钮,如果日期是:“06/01/2012”然后点击下一步,它应该变成:“06/02/2012”。如果他们点击“prev”按钮,那么它应该变成“05/31/2012”。
它需要跟踪闰年、一个月中的天数等。
有任何想法吗?
PS 使用 AJAX 从服务器获取日期不是一种选择,它有点滞后,而不是客户端想要的用户体验。
我想让用户使用 JavaScript 轻松添加和减去日期,以便按日期浏览他们的条目。
日期格式为:“mm/dd/yyyy”。我希望他们能够点击“下一步”按钮,如果日期是:“06/01/2012”然后点击下一步,它应该变成:“06/02/2012”。如果他们点击“prev”按钮,那么它应该变成“05/31/2012”。
它需要跟踪闰年、一个月中的天数等。
有任何想法吗?
PS 使用 AJAX 从服务器获取日期不是一种选择,它有点滞后,而不是客户端想要的用户体验。
代码:
var date = new Date('2011', '01', '02');
alert('the original date is ' + date);
var newdate = new Date(date);
newdate.setDate(newdate.getDate() - 7); // minus the date
var nd = new Date(newdate);
alert('the new date is ' + nd);
使用日期选择器:
$("#in").datepicker({
minDate: 0,
onSelect: function(dateText, inst) {
var actualDate = new Date(dateText);
var newDate = new Date(actualDate.getFullYear(), actualDate.getMonth(), actualDate.getDate()+1);
$('#out').datepicker('option', 'minDate', newDate );
}
});
$("#out").datepicker();
可能会派上用场的额外东西:
getDate() Returns the day of the month (from 1-31)
getDay() Returns the day of the week (from 0-6)
getFullYear() Returns the year (four digits)
getHours() Returns the hour (from 0-23)
getMilliseconds() Returns the milliseconds (from 0-999)
getMinutes() Returns the minutes (from 0-59)
getMonth() Returns the month (from 0-11)
getSeconds() Returns the seconds (from 0-59)
好链接: MDN 日期
您需要使用getTime()
和setTime()
在 javascript Date 对象中添加或减去时间。使用setDate()
和getDate()
达到 1、30、31 等月份的限制时会导致错误。
使用 setTime 允许您以毫秒为单位设置偏移量,并让 Date 对象计算其余部分:
var now=new Date();
var yesterdayMs = now.getTime() - 1000*60*60*24*1; // Offset by one day;
now.setTime( yesterdayMs );
startdate.setDate(startdate.getDate() - daysToSubtract);
startdate.setDate(startdate.getDate() + daysToAdd);
JavaScriptDate
对象可以在这里提供帮助。
第一步是将这些字符串转换为Date
实例。这很容易做到:
var str = "06/07/2012"; // E.g., "mm/dd/yyyy";
var dt = new Date(parseInt(str.substring(6), 10), // Year
parseInt(str.substring(0, 2), 10) - 1, // Month (0-11)
parseInt(str.substring(3, 5), 10)); // Day
然后你可以做各种有用的计算。JavaScript 日期理解闰年等。他们使用理想化的“日”概念,即恰好86,400 秒长。它们的基本值是自大纪元(1970 年 1 月 1 日午夜)以来的毫秒数;对于 The Epoch 之前的日期,它可以是负数。
更多关于MDN 页面的信息Date
。
您也可以考虑使用像MomentJS这样的库,它有助于解析、计算日期、格式化……
//In order to get yesterday's date in mm/dd/yyyy.
function gimmeYesterday(toAdd) {
if (!toAdd || toAdd == '' || isNaN(toAdd)) return;
var d = new Date();
d.setDate(d.getDate() - parseInt(toAdd));
var yesterDAY = (d.getMonth() +1) + "/" + d.getDate() + "/" + d.getFullYear();
$("#endDate").html(yesterDAY);
}
$(document).ready(function() {
gimmeYesterday(1);
});
你可以在这里试试:http : //jsfiddle.net/ZQAHE/