【问题标题】:Time arithmetic with moment带矩的时间算术
【发布时间】:2017-03-21 00:34:34
【问题描述】:
在用户集合的 This Meteor 服务器端代码中,属性 createdAt 显示类似 ISODate("2017-02-09T01:22:30.894Z") 的内容。
在另一个集合myCol 我有createdAt 属性,其unix 时间戳以毫秒为单位。
Moment.js 已安装。
如何检查以下情况:
myCol.createdAt 是从创建用户的月底开始的 n 个月后。谢谢
【问题讨论】:
标签:
javascript
meteor
momentjs
【解决方案1】:
这是一种应该可行的方法(当然还有一些其他方法可以做到这一点……这是我想到的第一个方法)。
您可以将 Users createdAt 属性转换为像这样的时刻对象(假设您的用户文档存储在名为 userOne 的 var 中)。
var moment1 = moment(userOne.createdAt);
然后,您可以像这样转换其他集合中的 unix 时间戳(假设文档存储在名为 doc 的 var 中)。
var moment2 = moment(doc.createdAt);
现在找到 moment1 的结束时间并添加 'N' 个月。
moment1.endOf('month').add(N, 'months');
最后,进行比较。
moment2.isAfter(moment1);
【解决方案2】:
我不确定如何获取 ISODate 对象的字符串表示形式,可能只是 .toString()。
但是,通过当前日期Date.now() 表示的myCol.createdAt,您可以通过这种方式获得以月为单位的时差。
var isoString = "2017-02-09T01:22:30.894Z"
var today = Date.now()
console.log(moment(isoString).diff(today, 'months'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.0/moment.min.js"></script>