我正在使用 c# 为 Invision Board Forum 使用 API。这个想法是应用程序将用于一次发布多个事件,而不是一次只发布一个。
我正在使用 json.net 来构建我的请求,我发布的用户的时区设置为 UTC,我也将事件的日期+时间转换为 UTC。我查看了请求参数,此时的转换是正确的。
事件发布时,时间不正确。例如,本应在 6 月 6 日下午 6 点发布的事件在 6 月 7 日凌晨 3 点发布。
我的问题如下:我不确定时间在什么时候被转换。我应该提一下,日历有一个自动转换器,它会向您显示当地时间的事件,但是正如我之前提到的,我发布的用户的时区设置为 UTC。我也尝试将本地时间设置为 UTC,但我不知道我是否应该知道我们服务器的时区(这将非常困难,因为我们正在使用托管服务)或者缺少什么,所以发布的时间是正确的。
这是我处理日期的片段:
date = Convert.ToDateTime(date1) + time;
DateTime dateConverted = date.ToUniversalTime();
string d1=dateConverted.ToString("o", CultureInfo.InvariantCulture);
dt.Rows.Add(d1, events[b]);
request.AddParameter("calendar", calendarId);
request.AddParameter("title", row["EVENT"]+ "["+eventName+"]");
request.AddParameter("description", eventName);
request.AddParameter("start",row["DATE"]);
以及 InvisionBoard api 文档的链接: https ://invisioncommunity.com/developers/rest-api?endpoint=calendar/events/POSTindex
谢谢阅读 :)
编辑: 我现在这样建立日期:
DateTime dateF = new DateTime(2020, date.Month, date.Day, time.Hours, time.Minutes,0);
它给了我一个不同的时间(谢谢jakdep,我和很多人一起解决了这个问题,没有人发现'你为什么要添加时间'的事情)。不过,如果我发布,比如说,上午 11 点,我会将其转换为 UTC,但它会在日历上显示上午 11 点,这是原始时间(在另一个时区),而不是下午 2 点,这是我必须在我的时区看到的: /