c# Outlook检索设定问题

基于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

你可能感兴趣的:(.NET技术,c#,outlook)