0

当我在 javascript 中使用日期对象转换当前日期时,我将日期格式返回为 05-Jan、12-feb 等。我做了这样的事情

            var curr = new Date(),
            curr_year = curr.getFullYear(),
            curr_month = curr.getMonth(),
            curr_day = curr.getDay(),
            today = new Date(curr_year, curr_month, curr_day, 0, 0, 0, 0);
            console.log(today);

在这里,今天返回为无效日期,我需要创建一个时间戳,该时间戳不应包括分钟秒和毫秒作为零,用于仅基于我可以分类的月份和日期的日期比较。有没有办法动态创建日期并比较那些给定格式的日期。当我尝试使用日期对象转换我的日期字符串时,它返回年份为 2001。如何根据当前年份比较日期。例如:在 php 中,我使用mktime从给定的日期格式动态创建日期并比较这些结果。任何建议都会有所帮助。谢谢。

4

4 回答 4

1

您可以利用本机 JS 日期功能来获取人类可读的时间戳日期字符串。

var today = new Date();
console.log( today.toDateString() ); // Outputs "Mon Feb 04 2013"

日期比较也是内置的。

var yesterday = new Date();
yesterday.setDate( yesterday.getDate() - 1);
console.log( yesterday.toDateString() ); // Outputs "Sun Feb 03 2013"
console.log( yesterday < today ); //Outputs true

您可以使用其他内置方法对此比较进行微调,使其对分钟/秒敏感/不敏感,或将所有这些设置为 0。

于 2013-02-04T11:19:15.113 回答
0

你说你在 php 中使用了 mktime(),那么这个呢?

于 2013-02-04T11:21:02.343 回答
0

更改为:

        var curr = new Date(),
        curr_year = curr.getFullYear(),
        curr_month = curr.getMonth()+1,
        curr_day = curr.getDay(),
        today = curr_month+'/'+curr_day+'/'+curr_year;
        console.log(today);

(getMonth()+1 是因为一月是 0)

改变:

           today = curr_month+'/'+curr_day+'/'+curr_year;

到你喜欢的任何格式。

于 2013-02-04T11:21:20.593 回答
0

我找到了一种将日期转换为时间戳的方法,我已经尝试过实现@nbrooks,但是 .toDateString 内置了日期比较,适用于运算符 < 和 >,但不适用于 == 运算符,我已经使用Date.parse();函数来实现它。来了。。

 var curr = new Date(),
 curr_year = curr.getFullYear(),
 curr_month = curr.getMonth(),
 curr_day = curr.getDate(),
 today = new Date(curr_year, curr_month, curr_day, 0,0,0,0);
 var dob = new Date('dob with month and date only'+curr_year);
 if(Date.parse(dob) == Date.parse(today)){
        //Birthdays....
        }

此方法可用于为动态创建的日期创建时间戳。感谢您的建议。

于 2013-02-07T07:35:00.290 回答