我想在javascript中比较两个日期,但在计算日期时我会得到奇怪的值。
任何人都可以在我的代码中看到导致问题的明显内容吗?
问题是今天的日期变量看起来像一个普通的日期,但我下周和上周的计算结果都是大数字,而且比较不起作用。
//Handles client side date selection changed
function dateSelectionChanged(sender, args) {
//Declare array for Day names
var days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
//Get the date
var date = sender.get_selectedDate();
//Get todays Date
var today = new Date();
var nextWeek = new Date().setDate(today.getDate() + 7);
var lastWeek = new Date().setDate(today.getDate() - 7);
//Show the day name
$('#<%= txtDay.ClientID %>').val(days[date.getDay()]);
if ( date < lastWeek ) {
alert('Date Under Week');
}
if ( date > nextWeek ) {
alert('Date Over Week');
}
}
这是调试中的代码,因此您可以看到值:
修改 溶液
//Handles client side date selection changed
function dateSelectionChanged(sender, args) {
//Declare array for Day names
var days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
//Get the date
var date = sender.get_selectedDate();
//Get todays Date
var today = new Date();
var nextWeek = new Date().setDate(today.getDate() + 7);
var lastWeek = new Date().setDate(today.getDate() - 7);
//Get the dates in easier to compare format
nextWeek = new Date(nextWeek);
lastWeek = new Date(lastWeek);
//Show the day name
$('#<%= txtDay.ClientID %>').val(days[date.getDay()]);
if ( date < lastWeek) {
alert('Date Under Week');
}
if ( date > nextWeek) {
alert('Date Over Week');
}
}
答案 0 :(得分:2)
对于setDate
,JavaScript返回时间戳,表示自1970年1月1日00:00:00到特定时刻的毫秒数。它可能看起来毫无用处,但事实上它非常有用,因为你可以将任何时间表示为一个简单的数字。
如果您想要取回Date
,可以使用:
new Date(timestamp);
所以,例如添加:
nextWeek = new Date(nextWeek);
lastWeek = new Date(lastWeek);
答案 1 :(得分:0)
另一种方法是设置这样的日期。
var today = new Date();
var nextWeek = new Date();
nextWeek.setDate(today.getDate() + 7);
var lastWeek = new Date();
lastWeek.setDate(today.getDate() - 7);
答案 2 :(得分:-1)
如果不提供参数,构造函数将为其创建Date对象 今天的日期和时间根据当地时间。如果你供应一些 参数但不是其他参数,缺少的参数设置为0.如果你 提供任何参数,你必须至少提供年,月和 天。您可以省略小时,分钟,秒和毫秒。
自1970年1月1日午夜起,以毫秒为单位测量日期 世界标准时间。 一天持有86,400,000毫秒。 Date对象范围是 相对于1970年1月1日,-100,000,000天到100,000,000天 UTC。
在比较日期时尝试以下代码
if ( today < lastWeek.getMilliseconds() ) {
alert('Date Under Week');
}
if ( today > nextWeek.getMilliseconds() ) {
alert('Date Over Week');
}
Date对象提供跨平台的统一行为。