在javascript或momentjs

时间:2016-06-09 18:49:31

标签: javascript date parsing format momentjs

给定一个日期字符串,我如何获得描述该日期字符串的格式字符串?

换句话说,如果没有通过显式格式使用,我怎样才能获得Date()或MomentJS(可能每个都不同,没关系)的格式字符串用于解析那个日期字符串?

所以给定'2016-01-01'它应该输出类似'YYYY-MM-DD'的内容,例如。

(我知道这是一个简单的问题,可能在某个地方有答案,但很难简明扼要地说,所以我只能找到关于如何解析约会时间或如何显示日期的问题和答案。没有关于如何输出格式本身。)

2 个答案:

答案 0 :(得分:6)

整合来自Matt Johnson's answer的信息,一些评论以及我自己的贡献。

使用Moment.js(版本2.10.7+),您可以使用Creation Data API。在Node.js中这样的东西:

moment('2016-01-01 00:00:00').creationData().format

输出

'YYYY-MM-DD HH:mm:ss'

正如任何日期解析一样,由于诸如语言环境之类的事情(例如,在美国和欧洲之间切换月份和天数的顺序),许多日期字符串的格式存在歧义。但上述方法对我来说已经足够了。

答案 1 :(得分:4)

您无法获得其他信息,例如区域设置。例如,01/12/16可能是2016年1月12日,2016年12月1日或2001年12月16日。

即使你知道语言环境,现实世界中有几个地方使用多种日期格式,具体取决于上下文。

请参阅https://en.wikipedia.org/wiki/Date_format_by_country

但是,如果您只是想确定使用多种已知格式中的哪一种来解析输入字符串,那么moment会有一个名为Creation Data的API。例如:

var m = moment("2016/06/10", ["YYYY-MM-DD", "MM/DD/YYYY"], true);
var f = m.creationData().format;  // "MM/DD/YYYY"