Javascript 如何使用momentjs或vanilla JS将ISO日期格式转换为yyyy MM dd格式?

Javascript 如何使用momentjs或vanilla JS将ISO日期格式转换为yyyy MM dd格式?,javascript,angularjs,date,momentjs,Javascript,Angularjs,Date,Momentjs,我试图点击一个足球运动API,其中包括yyyy-mm-dd格式的日期,仅显示从该日期到当前日期的分数。当前日期由用户使用日历选择,但当用户从日历中选择日期时,它将以ISO格式显示为“2018年8月17日星期五00:00:00 GMT+0545(尼泊尔时间)”。我想将前端的日期转换为yyyy-mm-dd格式,并将其发送到后端的API Url。我正在使用AngularJS和Java。如何将完整的ISO日期转换为该格式?基于该输出,您的日期似乎存储为JavaScript日期对象(请参阅:) 要获得所需

我试图点击一个足球运动API,其中包括yyyy-mm-dd格式的日期,仅显示从该日期到当前日期的分数。当前日期由用户使用日历选择,但当用户从日历中选择日期时,它将以ISO格式显示为“2018年8月17日星期五00:00:00 GMT+0545(尼泊尔时间)”。我想将前端的日期转换为yyyy-mm-dd格式,并将其发送到后端的API Url。我正在使用AngularJS和Java。如何将完整的ISO日期转换为该格式?

基于该输出,您的日期似乎存储为JavaScript日期对象(请参阅:)

要获得所需的字符串,一种解决方案是获取输入值(我称之为d)并执行以下操作(我假设您已加载momentjs):

var datestring = moment(d).format('YYYY-MM-DD')

datestring现在应该以您想要的格式包含日期…如果出于某种原因d是一个字符串而不是一个日期对象,您可以在momentjs文档下面创建一个解析模式:

假设您有一个JavaScript
日期
对象要处理,您可以在纯JS中执行此操作:

var datestring = dateobj.toISOString().substring(0, 10);   // 'yyyy-MM-dd'

如果您只有显示字符串(
“2018年8月17日星期五00:00:00 GMT+0545(尼泊尔时间)”
),您可以首先使用以下命令将其转换为
日期
对象:

// displaystring = "Fri Aug 17 2018 00:00:00 GMT +0545 (Nepal Time)";
var dateobj = new Date(displaystring);

…然后执行上面的日期字符串转换。

使用内置日期过滤器“我正在使用AngularJS和Java”。你是指JavaScript而不是Java吗?“2018年8月17日星期五00:00:00 GMT+0545(尼泊尔时间)”不是“ISO格式”@BasilBourque No.我在后端使用Java,在前端使用AngularJS。使用JHipster生成项目。它是ECMAScript 2018中引入的格式,因此您可以称之为ECMAScript格式。-)它类似于。使用矩量.js令牌,RFC2822是
ddd,DD-MMM-YYYY-HH:mm:ss-ZZ
,而ECMAScript格式是
ddd-MMM-DD-YYYY-HH:mm:ss.SSS-ZZ(timezoneName)
,其中“ZZ”是“GMT±HHmm”或“Z”,时区HHmm是偏移小时和分钟,时区名称取决于实现。toISOString将返回UTC日期,在午夜之前或之后的本地时区偏移持续时间内,这将与本地日期不同(取决于东道主是格林威治以西还是以东)。请不要参考W3学校,最好参考ECMA-262或MDN;-)