【问题标题】:What is the proper way to create a timestamp in javascript with date string?用日期字符串在 javascript 中创建时间戳的正确方法是什么?
【发布时间】:2013-02-04 11:15:22
【问题描述】:

当我在 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 从给定的日期格式动态创建日期并比较这些结果。任何建议都会有所帮助。谢谢。

【问题讨论】:

  • JS Date的文档
  • @Westie 这是一个 C# 主题,这是一个 JavaScript 问题。
  • 该死!你是对的 - 今天早上睡着了!
  • 因此,如果您修正错字,则日期不再无效...如果这不是您想要的,请让您的问题更清楚。您预期的输入和输出是什么?

标签: javascript date timestamp


【解决方案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。

【讨论】:

  • 抱歉,由于该错误导致日期无效,但今天返回的日期为 01 bt 是 04 ..
  • @sathya Read the documentationgetDay 根据当地时间返回指定日期的星期几 (0-6)。今天是星期一,一周的第一天,所以它返回 1。如果您想要日期,请使用getDate
  • 我阅读了文档并纠正了这些错误today = Date(curr_year, curr_month, curr_day, 0, 0, 0, 0); 打印时它仍然返回小时、分钟, 秒和毫秒的当前时间。如果我需要使用我的日期格式(即 04-feb
  • @nbrroks 对不起,我又错过了新的接线员 .. 和平了
  • @sathya 您可以使用 Date 对象的 set 方法将秒等设置为 0,并将所有这些包装到 fn 中。你可以打电话来规范日期。或者,您可以简单地使用字符串相等来比较日期字符串(仅包括日期和日期,如我上面的回答所示)。
【解决方案2】:

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

【讨论】:

  • 我会尝试并回复您
  • 我试过但没有给出正确的timestamp today = mktime(0,0,0, curr_day, curr_month+1, curr_year)
【解决方案3】:

改成这个:

        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;

你喜欢的任何格式。

【讨论】:

  • 我想创建一个时间戳,不管是分钟还是秒
  • 这是没有 min/sec 的示例
【解决方案4】:

我找到了一种将日期转换为时间戳的方法,我已经尝试过实现@nbrooks,但 .toDateString 内置了日期比较,适用于运算符 ,但不适用于 == 运算符,我使用了 @987654321 @函数来实现它。就这样吧。。

 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....
        }

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多