当我的机器人托管在Azure上时,我遇到了日期时间格式问题

时间:2019-06-19 06:44:23

标签: c# azure botframework

我已经在v3版本中构建了一个漫游器。我正在使用自适应卡要求用户选择日期和时间。客户端我正在使用Direct Line API。在Bot Emulator中进行测试后,它将可以正常工作。但是,当我的机器人托管在Azure上时,有时我将当前日期与用户输入的日期进行比较时会引发异常。但有时效果很好。我无法调试。

异常:字符串未被识别为有效的DateTime。

修改1: @TheGeneral由于收到的IAwaitable<IMessageActivity> result是动态的,所以我只是将“当前日期”与用户输入的日期进行比较。 下面是我将当前日期转换为本地服务器时间的方法。

var info = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time");
DateTimeOffset localServerTime = DateTimeOffset.Now;
DateTimeOffset usersTime = TimeZoneInfo.ConvertTime(localServerTime, info);
DateTime Todaydate = usersTime.DateTime;

@ bradbury9我没有解析日期,因为日期格式随浏览器而变化。 IE上也不支持自适应卡日期和时间选择器。

请帮助我解决此问题。

1 个答案:

答案 0 :(得分:1)

如果获取String was not recognized as a valid DateTime,则问题是%100您尝试解析的用户输入日期格式以及主机操作系统的区域设置。它可以在您的计算机上使用,因为日期格式与操作系统的配置匹配。它在Azure上中断,因为您的云服务器位于其他区域,并且配置为其他日期格式。

我敢打赌,您的UI允许以类似于DD.MM.YYYY的格式输入内容,但是Azure服务器正在尝试将其解析为类似MM.DD.YYYY的形式。

您的解决方案是确保您的日期输入UI会为用户数据生成区域性不变的输出。提供有关您的前端的更多信息,您可能会收到更详细的建议。