如何将 WCF 样式格式的日期字符串(即“/Date(1342210377000)/”)转换为 c# DateTime?

Hca*_*tek 3 c# wcf datetime json datacontractserializer

ajax 请求发送 WCF 格式的日期值?它是一个转换为字符串的 JavaScript 日期对象,WCF 可以使用 DataContractSerializer 进行反序列化。

"/Date(1342210377000)/"
Run Code Online (Sandbox Code Playgroud)

客户端过去将此数据发送到 WCF 服务,但现在将其发送到 asp.net mvc 控制器。有谁知道如何将该字符串反序列化为 ac# DateTime 而不执行一系列 string.replace 操作?是否有我可以利用的现有 .NET 序列化器?我研究过使用 DataContractSerializer,但它的 readobject 方法需要一个流或 xmlreader。我无法弄清楚如何将 modelbindercontext.valueprovider 值转换为序列化器可以使用的流对象。如果有人知道我如何正确转换该字符串,我很想学习如何转换。感谢您提供任何提示、技巧、代码、链接等...

car*_*ira 5

您可以使用DataContractJsonSerializer将其转换为一个DateTime值:

var str = "\"/Date(1342210377000)/\"";
var dcjs = new DataContractJsonSerializer(typeof(DateTime));
var ms = new MemoryStream(Encoding.UTF8.GetBytes(str));
var dt = dcjs.ReadObject(ms);
Console.WriteLine(dt);
Run Code Online (Sandbox Code Playgroud)