【发布时间】:2014-06-22 14:20:07
【问题描述】:
我已经将一大堆日期字符串转换为 unix 时间戳(自纪元以来的毫秒数)。
我使用了 moment.js 日期库,它做得很好,除了有一个误解。在澳大利亚,日期通常以 DD/MM/YYYY 格式表示,但美国日期是 MM/DD/YYYY,而 moment 似乎假定我解析的日期是美国格式。
这导致诸如 01/10/2000 这样的日期被解析为 1 月 10 日而不是 10 月 1 日。我已将这些日期存储为代表自纪元以来时刻的数字,因此上述日期已存储为 970322400000 而不是 947426400000。
我想将我计算出的所有日期转换为正确的值。我需要一个函数,它将把970322400000 转换为947426400000 用于计算错误的所有日期。由于其他情况,我无法从原始来源重新处理日期。
不幸的是 - 我必须在 mongodb shell 中运行它。
这是我已经尝试过的(文件顶部的时刻 js 的缩小源)。
db.reminders.find()
.map(function(v) {
return {
id: v._id,
original: moment(v.reminderDate).format('YYYY-MM-DD'),
repaired: moment(moment(moment(v.reminderDate).format('MM-DD-YYYY'), 'DD-MM-YYYY').valueOf()).format('YYYY-MM-DD')
};
})
但是我担心它不起作用。在输出的结果中,我找不到任何日期分量高于 12 的日期。
我在这里做错了什么。我如何才能实现这种转变?
【问题讨论】:
-
我真的不认为你可以。这里的重点是损害已经造成。真正的担心是您的“日”值不会超过 12。我本来预计该功能会失败,这可能会给您当时的线索。但是,如果它实际上只是回落到可能的最高值,那么您似乎已经完成了。您最好的选择是尝试使用字符串恢复信息并重新开始。始终有备份。
-
对不起各位,我已经意识到这实际上是一个不可能的问题。
-
我会在 8 小时后更新问题。堆栈溢出不会让我更新我的问题。
-
我发错了答案,对不起,没有
t mind that its 真的不可能的问题 -
雷米。既然所有答案都已删除,您应该可以删除它。祝你确定日期好运。
标签: javascript mongodb momentjs