我通过SuiteTalk进行搜索,并使用lastModifiedDate获得一张记录:
<listRel:lastModifiedDate>2014-12-12T11:12:24.000-08:00</listRel:lastModifiedDate>我在英国时间19:12:24更新了这个记录,所以我知道lastModifiedDate是正确的。
在我的C#代码中,我读取了lastModifiedDate值,它使我在ToString lastModifiedDate DateTime值时得到了12/12/2014 19:12:24。
然后,我修改一个记录,以便将其lastModifiedDate更改为现在。
然后执行另一个搜索,这次在搜索条件中指定前面的lastModifiedDate值。
生成的请求XML如下所示:
<q1:lastModifiedDate operator="notBefore">
<searchValue xmlns="urn:core_2014_2.platform.webservices.netsuite.com">2014-12-12T19:12:24</searchValue>
</q1:lastModifiedDate>没有回应记录。
我想,这是因为SuiteTalk假设2014-12-12T19:12:24和2014-12-12T19:24:08:00是一样的,这是在未来,当然是在我一分钟前更新记录的那一刻之后。
那么,我怎样才能让SuiteTalk知道我指的时间呢?
发布于 2014-12-12 21:25:21
理想情况下,您应该与DateTimeOffset类型交互,因此不会出现混淆。
但是,由于您说您正在与从WSDL生成的代码进行交互,并且不能更改WSDL或它生成的代码,所以您必须与DateTime类型交互。在这样做时,请确保将.Kind属性转换为DateTimeKind.Utc,以便将时间转移到UTC,当序列化为ISO8601格式时,xml将在末尾包含Z字符。
假设您的原始值位于正在运行的计算机的本地时间:
DateTime dt = new DateTime(2014,12,12,19,12,24);
foo.LastModifiedDate = dt.ToUniversalTime();或者,如果您正在处理特定的时区,您可以这样做:
DateTime dt = new DateTime(2014,12,12,19,12,24);
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
foo.LastModifiedDate = TimeZoneInfo.ConvertTimeToUtc(dt, tzi);https://stackoverflow.com/questions/27451779
复制相似问题