我正在开发一个Node.js应用程序,我必须将类似am 13. Dezember 2017
的德语字符串日期转换为ISO日期,当我使用moment.js库转换它时,我得到了invalid date
,任何溶液
答案 0 :(得分:1)
您可以使用moment(String, String, String)
解析13. Dezember 2017
,然后使用toISOString()
。
由于您的输入既不是ISO 8601识别格式,也不是RFC 2822中您必须提供格式参数。 DD
代表该月的某一天,MMMM
代表月份的名称,YYYY
代表4位数的年份。
第三个参数告诉我们使用给定的语言环境解析输入:
从版本 2.0.0 开始,区域设置键可以作为第三个参数传递给
moment()
和moment.utc()
。
请注意,您必须导入de
区域设置才能使其正常工作(在浏览器中使用moment-with-locales.js
或/locales/de.js
或在节点的Loading locales in NodeJS部分后使用。)
这是一个实例:
var m = moment('13. Dezember 2017', 'DD MMMM YYYY', 'de');
console.log( m.toISOString() );

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment-with-locales.min.js"></script>
&#13;
答案 1 :(得分:0)
您可以使用toISOString方法,它使用ISO标准将Date对象作为String返回:
var d = new Date();
var n = d.toISOString();
答案 2 :(得分:0)
看看这里:
你需要这样的东西:
moment('13. Dezember 2017', 'DD. MMMM YYYY', 'de').format(moment.ISO_8601);
答案 3 :(得分:0)
您可以使用以下方式轻松设置格式:
var now = moment(); // pass your date to moment
var formatedNow = moment().toISOString(now);
or
var formatedNow = now.toISOString();