【问题标题】:How to return the current timestamp with Moment.js?如何使用 Moment.js 返回当前时间戳?
【发布时间】:2014-11-02 06:59:57
【问题描述】:

伙计们,

我正在尝试了解 MomentJS API。在机器上获取当前时间的适当方法是什么?

var CurrentDate = moment();

var CurrentDate = moment().format();

试图解析他们的文档,但不清楚使用什么。

http://momentjs.com/docs/#/query/is-a-moment/

【问题讨论】:

  • 当前时间是多少? unix 时间戳?
  • 我会想象 RFC3339 或任何互联网标准 id 用于返回给客户端等
  • 返回客户端...嗯...我猜你是在nodejs中获取它并将它发送到浏览器想要再次将其转换为momentjs实例?
  • 抱歉,我的回答对您有帮助吗?
  • 绝对是,我认为 :) 问了一个关于var now = new Date().getTime(); userObject.registered = moment(now).toDate();的快速问题

标签: javascript node.js momentjs


【解决方案1】:

在这里,您将 momentjs 的实例分配给 CurrentDate:

var CurrentDate = moment();

这里只是一个字符串,来自 momentjs 实例的默认格式:

var CurrentDate = moment().format();

这里是自 1 月以来的秒数......好吧,unix 时间戳:

var CurrentDate = moment().unix();

这里还有另一个字符串为 ISO 8601 (What's the difference between ISO 8601 and RFC 3339 Date Formats?):

var CurrentDate = moment().toISOString();

这也可以做到:

var a = moment();
var b = moment(a.toISOString());

console.log(a.isSame(b)); // true

【讨论】:

  • 这可以接受吗? var now = new Date().getTime(); userObject.registered = moment(now).toDate();
  • @Cmag,我不明白这个问题,但看看这个:jsfiddle.net/coma/bLe31qq0,你可以在那里看到,即使在一秒钟之后,时刻实例保持相同的时间,因为它是冻结,与 new Date() 的行为相同。
  • 所以它的行为相同?
  • @Cmag,是的,将 momentjs 视为类固醇上的 Date 对象,并且仅在使用需要原始 Date 对象的第三方库时才使用 toDate 方法。使用 momentjs,复杂的时间计算非常简单,令人愉快。我用它制作了一个日期选择器:github.com/coma/MomentPicker/blob/master/src/MomentPicker.js
  • .format('x') 选项也会生成一个时间戳字符串。
【解决方案2】:

moment().unix()你会得到一个unix时间戳(以秒为单位)

moment().valueOf()你会得到一个完整的时间戳(以毫秒为单位)

【讨论】:

  • 格式化`var CurrentDateUnixTimestamp = moment().unix(); moment.unix(CurrentDateUnixTimestamp).format("YYYY-MM-DD HH:mm");`
  • unix 时间戳和full 时间戳有什么区别?我想full 时间戳表示自 1970 年 1 月 1 日以来的〜时间流〜以毫秒为单位,但我无法弄清楚另一个。
  • .unix() 为您提供以秒为单位的 Unix 时间戳,.valueOf() 为您提供以毫秒为单位的 Unix 时间戳(也就是我一直认为的 Unix 时间戳)。
  • @AndrewKoster 我要指出,UNIX 时间戳 (POSIX) 实际上定义为自 1/1/1970 00:00:00 忽略的 UTC 数闰秒。所以说“以秒为单位的unix时间戳”实际上是多余的,最近对使用毫秒的痴迷让我感到沮丧。只有在应用程序需要时才应该使用毫秒。大多数应用程序不需要这种粒度,当我发现 js valueOf 使用millis 时,我感到很失望,因为它强化了一个糟糕的 imo 模式。
  • 即您一直认为的 UNIX 时间戳实际上是不正确的。你有他们倒退。时刻js调用函数unix是有原因的...
【解决方案3】:

仍然没有答案。 Moment.js - 除了这么简单的任务之外,什么都可以做。

我正在使用这个:

moment().toDate().getTime()

【讨论】:

    【解决方案4】:

    尝试这样使用它:

    let current_time = moment().format("HH:mm")
    

    【讨论】:

    【解决方案5】:

    如果您只想要自 01-JAN-1970 以来的毫秒数,那么您可以使用

    var theMoment = moment(); // or whatever your moment instance is
    var millis;
    
    millis = +theMoment; // a short but not very readable form
    // or
    millis = theMoment.valueOf();
    // or (almost sure not as efficient as above)
    millis = theMoment.toDate().getTime();
    

    【讨论】:

      【解决方案6】:

      试试这个

      console.log(moment().format("MM ddd, YYYY HH:mm:ss a"));
      

      console.log(moment().format("MM ddd, YYYY hh:mm:ss a"));
      <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>

      【讨论】:

        【解决方案7】:

        按位置获取:

        moment.locale('pt-br')
        return moment().format('DD/MM/YYYY HH:mm:ss')
        

        【讨论】:

        • .locale() 有什么作用?
        • 嗨@Charith_32,基本上这会翻译您定义的格式。前任; .format('LLL')
        【解决方案8】:

        试试这个方法:

        console.log(moment().format('L'));
        moment().format('L');    // 05/25/2018
        moment().format('l');    // 5/25/2018
        

        格式化日期:

        moment().format('MMMM Do YYYY, h:mm:ss a'); // May 25th 2018, 2:02:13 pm
        moment().format('dddd');                    // Friday
        moment().format("MMM Do YY");               // May 25th 18
        moment().format('YYYY [escaped] YYYY');     // 2018 escaped 2018
        moment().format();                          // 2018-05-25T14:02:13-05:00
        

        访问:https://momentjs.com/ 了解更多信息。

        【讨论】:

          【解决方案9】:

          使用 DD-MM-YYYY 格式的 momment.js 的当前日期

          const currentdate=moment().format("DD-MM-YYYY"); 
          console.log(currentdate)
          

          【讨论】:

            【解决方案10】:

            我想补充一点,您可以将整个数据信息放在一个对象中:

            const today = moment().toObject();
            

            您应该获得具有以下属性的对象:

            today: {
                date: 15,
                hours: 1,
                milliseconds: 927,
                minutes: 59,
                months: 4,
                seconds: 43,
                years: 2019
                }
            

            当您必须计算日期时,它非常有用。

            【讨论】:

              【解决方案11】:

              要使用 am / pm 和 moment,这里是一个来自 react 组件的 sn-p

              import Moment from 'moment';
              
              const time = Moment().format("hh:mm a")
              

              作为参考,请记住Moment.js is considered a legacy project,它可以带来性能开销

              【讨论】:

                【解决方案12】:

                致所有使用react-moment的人:

                import Moment from 'react-moment'
                

                内部渲染(使用 format 支持您需要的格式):

                const now = new Date()
                <Moment format="MM/DD/YYYY">{now}</Moment>
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-02-02
                  • 2019-11-08
                  • 1970-01-01
                  • 1970-01-01
                  • 2017-07-07
                  • 1970-01-01
                  相关资源
                  最近更新 更多