有这个示例代码,但它开始讨论毫秒/纳秒问题.
自从C#中的Unix纪元以来,同样的问题出现在MSDN上,秒.
这是我到目前为止所得到的:
public Double CreatedEpoch
{
get
{
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime();
TimeSpan span = (this.Created.ToLocalTime() - epoch);
return span.TotalSeconds;
}
set
{
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime();
this.Created = epoch.AddSeconds(value);
}
}
Run Code Online (Sandbox Code Playgroud) 我们有一个运行的调度应用程序调用WCF服务来运行夜间作业.其中大量包括有关当前营业日期的信息.出于商业原因,调度服务器设置为GMT,但我们的服务在设置为纽约时间的服务器上运行.
这引起了一个问题; 日期将通过显式时区信息传递给我们的.NET服务.因此,当服务告诉应用程序以"2008-11-03 00:00:00 +0:00"的日期运行时,服务会将其解释为"2008-11-02 19:00:00 -5:00" "事情与错误的日期有关.
调度程序行为是第三方和硬编码的,因此我们无法告诉调度程序省略时区偏移.我们不希望总是将日期转换为GMT,因为我们的亚洲办事处很可能会调用相同的服务,我们将回到同样的问题.
有没有办法标记DataContract,甚至控制它在足够低的水平,以确保DateTime种类将是未指定的?或者是否有一种方法使用DateTime来确定用于创建它的原始信息是什么,并在后处理步骤中将其转换回原始值?
如果它有帮助,那么我们现在的合同相当简单.方法采用一个参数,该参数是从下面的类派生的类.
[DataContract]
public class BaseTimeSensitiveParameters
{
[DataMember] public DateTime? BusinessDate;
}
Run Code Online (Sandbox Code Playgroud)