Kev*_*vin 12 c# json web-services
我正在尝试反序列化/序列化一个时间跨度,
但是当json被发送时,设置为00:00:00这是否可能呢?
谢谢!-Kevin
顺便说一句,语言是C#,使用Visual Studio 2008.
Ron*_*ack 10
我尝试了#Jessycormier的方法,它对我不起作用.我运行DataContractJsonSerializer来查看它会产生什么,我发现它给了我一个看起来更像这样的值.
{"PassedTimeSpan":"P1DT2H3M4S"}
Run Code Online (Sandbox Code Playgroud)
上面显示的值是1天,2小时,3分钟和4秒.
所以看起来格式是:
[ - ] P [{天} d] [T [{小时} H] [{分钟} M] [{秒} S]]
哪里:
- 表示负时间跨度,省略正值
P必须是第一个字符(除非负时间值)
T必须在时间跨度的时间部分之前.
[] =可选部分,如果为0则可以省略.
我明白了,显然这是一个MS设计缺陷......
由于TimeSpan不能是无参数对象.XML无法重新创建它.
看看这个网站. http://forums.silverlight.net/forums/p/51793/135450.aspx
所以.因此无法转换TimeSpan.一种简单的方法是将时间跨度更改为字符串,然后将字符串发送出去.并使用TimeSpan.TryParse(String);
如果您应用确切的格式,则可以使用 TimeSpan。格式为:“0.00:00:00.0000”
将时间跨度设置为 30 分钟
var jsonData = JSON.stringify({
myDataObject: {
TimeSpanValue : "0.00:" + $("#InputWithMinVal").val() + ":00.0"
}
});
Run Code Online (Sandbox Code Playgroud)
这个解决方案对我有用。我正在使用 MVC 4.0 和 .Net Framework 4.0。
这些答案都是过时的,所以我想我会提供一个更新的更好的答案。moment.js现在直接支持.NET Timespan
序列化格式。
从版本2.1.0开始,支持以下功能:
moment.duration('23:59:59');
moment.duration('23:59:59.999');
moment.duration('7.23:59:59.999');
moment.duration('23:59'); // added in 2.3.0
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23024 次 |
最近记录: |