我从服务器收到一个字符串形式的日期时间,可能如下所示:
07/08/2012 13:17:32
Run Code Online (Sandbox Code Playgroud)
这是 UTC 时间。
或者它可能具有以下格式的时区:
07/08/2012 13:17:32 UTC+01:00
Run Code Online (Sandbox Code Playgroud)
我需要一种通用方法将其解析为Date要显示的对象。如果我这样做,var d = new Date(str)那么它假设的第一个例子是当地时间。
编辑:字符串中可能并不总是“UTC”,我认为它可能是 GMT、Z 或任何其他时区指示符。
有任何想法吗?
在我的单元测试中,我想强制验证代码首先在其上有DataAnnotations的POCO.
MVC框架必须在幕后进行,基本上我想知道如何,所以我希望能够使用它.
在以下示例中,该方法作为WCF服务操作公开,并且该服务在IIS中承载.在进入函数时,WebOperationContext.Current按预期设置.然而,在await完成等待之后,WebOperationContext.Current被设置为null.
public async Task TestAsync()
{
//WebOperationContext.Current is set
Task t = new Task(()=>Thread.Sleep(10000));
t.Start();
await t;
//WebOperationContext.Current is null
}
Run Code Online (Sandbox Code Playgroud)
这似乎是一个缺点,所以我想知道是否有人知道这一点以及是否有任何好的方法.我意识到我可以在局部变量中缓存对conext的引用,但这看起来不太好.
更新
一种有效的方法是
public async Task TestAsync()
{
WebOperationContext ctx = WebOperationContext.Current;
Task t = new Task(()=>Thread.Sleep(10000));
t.Start();
await t;
//ctx is set
}
Run Code Online (Sandbox Code Playgroud)
而且,正如其他人所暗示的那样,我可以做到这一点
public async Task TestAsync()
{
CallContext.LogicalSetData("WebOperationContext.Current", WebOperationContext.Current);
Task t = new Task(()=>Thread.Sleep(10000));
t.Start();
await t;
WebOperationContext ctx = (WebOperationContext)CallContext.LogicalGetData("WebOperationContext.Current");
}
Run Code Online (Sandbox Code Playgroud)
每个的性能和线程安全性会产生什么影响?