我正在向LUIS发送基于时间值的查询(例如,“从现在开始10分钟的时间是多少?”)。我希望时间回到本地时区,因此在LuisPredictionOptions对象(C#)上,我设置了TimezoneOffset(例如,我将其设置为提前2小时或120分钟)。
在Fiddler中,我可以看到它调用LUIS端点时正确添加了“ timezoneOffset = 120.0”。
但是,时区以UTC的形式返回-无论是否设置了timezoneOffset或什至将其设置为什么,时间始终使用内置的datetimeV2实体返回UTC。
有人知道TimezoneOffset属性的用途吗?我使用不正确吗?还有其他方法可以从LUIS获取本地时间吗?
并且我正在尝试以下示例话语:“在10分钟内”。
[当我这样做时,timex以UTC表示(例如,timex = 2020-01-11T16:08:25),并且“ value”返回相同的值,减去“ T”,如下所示:value = 2020 -01-11 16:08:25
我可能不知道timex是否采用UTC,但是可能应该通过timezoneOffset来调整“值”?
TimeZoneInfo类的FindSystemTimeZoneById方法可用于根据系统时间确定正确的timezoneOffset。 C#中的示例如下所示:
// Get CST zone id
TimeZoneInfo targetZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
// Get local machine's value of Now
DateTime utcDatetime = DateTime.UtcNow;
// Get Central Standard Time value of Now
DateTime cstDatetime = TimeZoneInfo.ConvertTimeFromUtc(utcDatetime, targetZone);
// Find timezoneOffset
int timezoneOffset = (int)((cstDatetime - utcDatetime).TotalMinutes);
似乎在timezoneOffset之前,您的URL中似乎有一个不正确的问号。
使用相同的查询,我可以得到预期的行为,其中返回值相差10分钟。
您使用的是哪个SDK?也许您正在使用V3运行时SDK,该版本使用的V3终结点不使用timeZoneOffset,而是使用datetimeReference,而需要使用V2运行时SDK。