我试图反序列化/序列化一个时间跨度,使用JSON将序列化/反序列时间跨度
但当JSON是送它设置为00:00:00 是这甚至可能做什么?
谢谢! -Kevin
顺便说一句,语言是C#,使用Visual Studio 2008
我试图反序列化/序列化一个时间跨度,使用JSON将序列化/反序列时间跨度
但当JSON是送它设置为00:00:00 是这甚至可能做什么?
谢谢! -Kevin
顺便说一句,语言是C#,使用Visual Studio 2008
我想通了,很显然这是一个MS设计缺陷...
由于时间跨度不能是一个无参数的对象。 XML无法重新创建它。
看看这个网站。 http://forums.silverlight.net/forums/p/51793/135450.aspx
所以。因此TimeSpan无法转换。执行此操作的简单方法是 将时间范围更改为字符串,然后发送该字符串。 并使用TimeSpan.TryParse(String);
XML与你的问题有什么关系? – Crisfole 2014-06-10 12:44:43
@Crisfole我认为,而不是“XML”,他指的是他使用的任何序列化器(其中很多序列化为XML和JSON)。 – 2015-12-29 22:57:38
http://msdn.microsoft.com/en-us/library/bb412179.aspx
The JSON serializer throws a serialization exception for data contracts that have multiple members with the same name, as shown in the following sample code.
Copy
[DataContract]
public class TestDuplicateDataBase
{
[DataMember]
public int field1 = 123;
}
[DataContract]
public class TestDuplicateDataDerived : TestDuplicateDataBase
{
[DataMember]
public new int field1 = 999;
}
如果您应用确切的格式,您可以使用TimeSpan。格式为: “0.00:00:00.0000”
设置时间跨度到30分钟
var jsonData = JSON.stringify({
myDataObject: {
TimeSpanValue : "0.00:" + $("#InputWithMinVal").val() + ":00.0"
}
});
该解决方案为我工作。我使用.Net框架4.0的MVC 4.0。
我试过了#Jessycormier的方法,它对我没有用。 我运行DataContractJsonSerializer,看看它会产生什么,我发现给了我一个看起来更像这样的值。
{"PassedTimeSpan":"P1DT2H3M4S"}
上面显示的值为1天,2小时,3分钟和4秒。
所以看起来格式是:
[ - ] P [{天} d] [T [{小时} H] [{分钟} M] [{秒} S]]
其中:
- 表示负入库时间,省略了对正值
p必须是第一个字符(除非负时间值)
T必须先于吨时间的一部分。如果0
感谢您写下通用模板!基于此,我可以编写下一个函数:formatTime = function(jsonTime)var re =/- ?P(?:\ d + D)?(?: T(?:(\ d +)H)?( (\ d +)M)((\ d +)S))/????; var timeArray = re.exec(jsonTime); var h = timeArray [1] == undefined? “”:timeArray [1]; var hr =“00”+ h; var hour = hr.substr(hr.length - 2,2); var m = timeArray [2] ==未定义? “”:timeArray [2]; var min =“00”+ m; var minute = min.substr(min.length - 2,2); 返回小时+“:”+分钟; } – LoBo 2015-06-03 08:56:26
这是一个ISO 8601持续时间:https://en.wikipedia.org/wiki/ISO_8601#Durations – MikeJansen 2015-09-22 14:40:08
这些答案都是过时可以省略
[] =可选的一部分,所以我想我会提供更新更好的答案。 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
串行使用哪? JavaScriptSerializer?DataContractJsonSerializer?你可以发布一个不起作用的小代码示例吗? – Oleg 2010-07-12 22:20:33
我使用Newtonsoft.json.jsonconvert。 所以我做的是。 JsonConvert.SerializeObject(TimeSpan); – Kevin 2010-07-13 13:36:52