首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将解析为MM/DD/YYYY的unix时间转换为DD/MM/YYYY unix日期

问如何将解析为MM/DD/YYYY的unix时间转换为DD/MM/YYYY unix日期
EN

Stack Overflow用户
提问于 2014-05-06 05:42:03
回答 1查看 944关注 0票数 1

我已经将一堆日期字符串转换为unix时间戳(从时代开始就是毫秒)。

我使用了moment.js日期库,它做得很好,除了有一个误解。在澳大利亚,日期通常以DD/MM/YYYY格式表示,而美国日期是MM/DD/YYYY,而矩似乎假定我分析的日期是美国格式的。

这导致将诸如2000年10月1日这样的日期解析为1月10日,而不是10月1日。我将这些日期存储为一个代表自纪元以来的时刻的数字,因此上面的日期被存储为970322400000而不是947426400000。

我想将我计算出来的所有日期转换成它们的适当值。我需要一个函数,它将接受970322400000并将其转换为947426400000,用于所有被错误计算的日期。由于其他情况,我无法重新处理的日期,从他们的原始来源。

不幸的是-我必须在mongodb shell中运行这个程序。

下面是我已经尝试过的内容(文件顶部时刻js的微小来源)。

代码语言:javascript
复制
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的日期。

我在这里做错什么了。我如何才能实现这一转变?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-07 01:16:41

这其实是一个不可能的问题。这是因为月份部分中大于12的数值将流入一年。

'01-01-2012‘-> x

'01-13-2011‘-> x

'01-25-2010‘-> x

对于任何给定的unix时间戳,都可以计算无穷大的日期字符串。因此,您无法知道原始的日期字符串是什么。这使得不可能将时间戳值更改为如果以不同的方式解析它的值。

使用这类问题进行公平警告,存储原始日期字符串。如果由于某种原因需要将日期作为一个数字存储,那么也不重要--也要存储原始日期。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23486745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档