获取javascript或momentjs中给定的日期格式(指定格式的字符串)

获取javascript或momentjs中给定的日期格式(指定格式的字符串),javascript,date,parsing,format,momentjs,Javascript,Date,Parsing,Format,Momentjs,给定一个日期字符串,如何获取描述该日期字符串的格式字符串 换句话说,如果没有传递显式格式来使用,我如何获取Date()或MomentJS(每个都可能不同,这很好)用于解析该datestring的格式字符串 例如,给定'2016-01-01'它应该输出类似'YYYY-MM-DD'的内容 (我知道这是一个简单的问题,可能在某个地方有答案,但很难简明扼要地表达出来,因此我只能找到关于如何解析日期字符串或如何显示日期的问题和答案。没有关于如何输出格式本身的问题和答案。)如果没有其他信息,例如语言环境,你

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

换句话说,如果没有传递显式格式来使用,我如何获取Date()或MomentJS(每个都可能不同,这很好)用于解析该datestring的格式字符串

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


(我知道这是一个简单的问题,可能在某个地方有答案,但很难简明扼要地表达出来,因此我只能找到关于如何解析日期字符串或如何显示日期的问题和答案。没有关于如何输出格式本身的问题和答案。)

如果没有其他信息,例如语言环境,你就不能。例如,
01/12/16
可以是2016年1月12日、2016年12月1日或2001年12月16日

即使您知道区域设置,在现实世界中也有多个地方使用了多种日期格式,具体取决于上下文

然而,如果您只是试图确定使用了多个已知格式中的哪一种来解析输入字符串,那么矩有一个用于该调用的API。例如:

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

整合来自的信息、一些评论和我自己的贡献

有了Moment.js(版本2.10.7+),您可以使用。Node.js中的类似内容:

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

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

正如任何日期解析一样,由于语言环境等原因,许多日期字符串的格式存在歧义(例如,在美国和欧洲,月和日的顺序是切换的)。但是上面的方法对我来说已经足够了。

当然,但是必须能够选择多个选项中的一个,因为它们可以解析这些字符串。因此,是的,存在歧义,但可以做出选择,并且已经隐式地做出选择,因为解析器存在。我认为这里的格式比语言环境更好,因为源系统和目标系统的位置可能没有多大帮助。;-)@没有你只是猜测的格式。虽然某些格式比其他格式“成功”的几率更高,但可以对03/04/05之类的字符串进行解析,以生成至少3个有效但不同的日期。请参阅(可能应该是…返回到Date.parse)。@tscizzle-请参阅我的更新答案-也许这会对您有所帮助。它确实有帮助,谢谢!但正如你所知,它确实像我最初想要的那样工作:)也就是说,你不必传递多种已知的格式。这非常有效:
时刻('2016-01-01 00:00:00').creationData().format
。它输出
“YYYY-MM-DD HH:MM:ss”