基于c# 设定outlook约会予定,时间格式是YYYY-MM-DD HH:mm 的情报。
问题发生:
根据开始时间(2023/01/01 7:00)条件查询该时间是否存在outlook信息时,明明存在一条数据,就是查询不出来数据
c#代码
`String filter = String.Format("@SQL=(\"urn:schemas:calendar:dtstart\" = '{0}' " +"AND \"urn:schemas:httpmail:subject\" " + " ci_phrasematch '{1}')",start.ToString("g"), "test");
outlook信息:
问题解决
原因是"urn:schemas:Calendar:dtstart"获取的时区与我本地时区不一致,本地是北京时区(UTC+8)
urn:schemas:Calendar:dtstart 时区是(UTC),由于时区不同导致数据查不出来。
修改C#
String filter = String.Format("@SQL=(\"urn:schemas:calendar:dtstart\" = '{0}' " +"AND \"urn:schemas:httpmail:subject\" " + " ci_phrasematch '{1}')",start.AddHours(-8).ToString("g"), "test");
END
补充:
1、大家可以参照一下微软官方筛选项目文档
2、上述代码中存在 start.AddHours(-8).ToString(“g”),g是指输出日期格式,以下示例显示了String中标准格式说明符的用法。格式方法和结果输出。
[C#]
String.Format("{0:t}", dt); // "4:05 PM" ShortTime
String.Format("{0:d}", dt); // "3/9/2008" ShortDate
String.Format("{0:T}", dt); // "4:05:07 PM" LongTime
String.Format("{0:D}", dt); // "Sunday, March 09, 2008" LongDate
String.Format("{0:f}", dt); // "Sunday, March 09, 2008 4:05 PM" LongDate+ShortTime
String.Format("{0:F}", dt); // "Sunday, March 09, 2008 4:05:07 PM" FullDateTime
String.Format("{0:g}", dt); // "3/9/2008 4:05 PM" ShortDate+ShortTime
String.Format("{0:G}", dt); // "3/9/2008 4:05:07 PM" ShortDate+LongTime
String.Format("{0:m}", dt); // "March 09" MonthDay
String.Format("{0:y}", dt); // "March, 2008" YearMonth
String.Format("{0:r}", dt); // "Sun, 09 Mar 2008 16:05:07 GMT" RFC1123
String.Format("{0:s}", dt); // "2008-03-09T16:05:07" SortableDateTime
String.Format("{0:u}", dt); // "2008-03-09 16:05:07Z" UniversalSortableDateTime