我正在开发气象服务,我需要编写一段代码来显示下周的天气预报。从服务器上,我只有一个“时间”实体,其“值”为下周一,例如“2020-04-06T00:00:00.000+02:00”。
{
"message": "Show me the weather for next week",
"entities": [
{
"value": "weather",
"text": "weather",
"entity": "radio_tag"
},
{
"value": "play_next",
"text": "next",
"entity": "media_control"
},
{
"value": "next",
"text": "next",
"entity": "next"
},
{
"value": {
"values": [
{
"value": "2020-04-06T00:00:00.000+02:00",
"grain": "week",
"type": "value"
}
],
"value": "2020-04-06T00:00:00.000+02:00",
"grain": "week",
"type": "value"
},
"entity": "time"
},
{
"value": "weather_condition",
"entity": "sub_intent"
}
],
"intent": "weather_condition",
"user_id": "5258",
"language_id": "56",
"driver": "gigaaa",
"abort": "0",
"extras": {
"coordinates": {
"lat": "44.4150804",
"lng": "19.1290729"
}
},
"conversation_messages_count": "1"
}
例如,如果今天是星期二,我必须显示下周的星期一和星期二,如果今天是星期六(04.04),我必须显示下周从星期一(06.04)到星期六(11.04)的每一天。我是初学者,为此我必须使用 Moment JS。
我尝试了这个条件if (this.conversation.payload.grain === 'week' && moment().startOf('isoWeek').isSame(this.conversation.payload.forecastTime))
但条件的第二部分不正确。
最佳答案
我们获取当前日期并检查我们是否与数据不在同一等周中,以便过滤掉本周的数据行。然后,我们采用当前日期并添加一周,以便我们可以检查是否已过去 <1 周。 理论上来说,只要用户的时区和返回的数据相同,就应该是您所需要的。
var valueFromData = this.conversation.payload.value;
var dateFromData = moment(valueFromData).startOf('day');
var oneWeek = moment().add(7,'d').startOf('day');
if(moment().startOf('isoweek').isBefore(dateFromData)
&& dateFromData.isBefore(oneWeek))
关于javascript - 时刻JS ("Must to show days in next week"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61014492/