我遇到一个问题,即使日期正在瞬间解析,该日期也将转换为今天的日期。看来Moment正在将日期转换为今天的日期。我相信我只是错误地使用了脚本。我不熟悉Moment。任何帮助将不胜感激。
export function getEvents (callback) {
request
.get(url)
.end((err, resp) => {
if (!err) {
const events = [];
JSON.parse(resp.text).items.map((event) => {
events.push({
start: moment(event.start.date).toDate()|| moment(event.start.dateTime),
end: moment(event.end.date).toDate() || moment(event.end.dateTime),
title: event.summary,
})
});
callback(events)
}
})
这是一个跟踪示例,其中Google日历的“开始”日期采用时间格式。
这是通话中的实时日期:
答案 0 :(得分:0)
解决此问题的方法在Moment API中。使用这个:
//https://stackoverflow.com/questions/51090597/botframework-on-teams-channel-11-authentication-aad-integrated
string tenantIdAAD = "";
try
{
tenantIdAAD = activity.GetChannelData<TeamsChannelData>().Tenant.Id;
}
catch (Exception exception)
{
tenantIdAAD = "";
}
ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));
if ([AAD_TenantID].TenantIdAAD.Equals(tenantIdAAD) || activity.ServiceUrl.StartsWith("http://localhost") )
{
await Conversation.SendAsync(activity, () => new Dialogs.RootDialog().LogIfException());
}
else
{
await connector.Conversations.ReplyToActivityAsync(activity.CreateReply("Access Denied"));
}
答案 1 :(得分:0)
查看了注释中提供的resp.text
之后,我创建了以下parse方法,将您的响应解析为所需的方式。
传递给此方法的response
是您在注释中提供的resp.text
。
import moment from 'moment'
const parseResponse = (response) => {
const events = []
response.forEach(obj => {
obj.items.forEach(
item => {
events.push({
start: moment(item.start.dateTime),
end: moment(item.end.dateTime),
title: item.summary
})
}
)
})
return events
}
注意:如果您想研究codesandbox.io/s/ywpznzrmv9
的解决方法,请检查moment
笔。如果resp.text
仅具有一个对象数组,则可以摆脱第一个forEach块。|
like:
const parseResponse = (response) => {
const events = []
response[0].items.forEach(
item => {
events.push({
start: moment(item.start.dateTime),
end: moment(item.end.dateTime),
title: item.summary
})
}
)
return events
}
注意:如果您坚持使用JSON.parse(),则将map
更改为forEach
。 map创建一个对象,这是您不需要的垃圾。