代码之家  ›  专栏  ›  技术社区  ›  Kevin

使用Json序列化/反序列化TimeSpan

  •  9
  • Kevin  · 技术社区  · 15 年前

    我正在尝试反序列化时间跨度,

    这有可能吗?

    5 回复  |  直到 6 年前
        1
  •  14
  •   RonnBlack    10 年前

    我试过Jessicormier的方法,但不管用。

    {"PassedTimeSpan":"P1DT2H3M4S"}
    

    上面显示的值是1天2小时3分4秒。

    所以看起来格式是:

    [-]P[{days}D][T[{hours}H][{min}M][{sec}S]]

    哪里:

    -表示负时间跨度,对于正值省略
    P必须是第一个字符(除非时间值为负)
    T必须在时间跨度的时间部分之前。
    []=可选部分,如果为0,则可以省略。

        2
  •  7
  •   John Kaster    8 年前

    这些答案都过时了,所以我想我会提供一个更新的更好的答案。 moment.js 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
    
        3
  •  5
  •   Kevin    15 年前

    因为TimeSpan不能是无参数对象。XML无法重新创建它。

    看看这个网站。 http://forums.silverlight.net/forums/p/51793/135450.aspx

    所以。因此无法转换TimeSpan。一个简单的方法是 将timespan更改为字符串,然后发送字符串。

        4
  •  4
  •   Jessy    7 年前

    如果应用精确的格式,则可以使用时间跨度。格式为:“0.00:00:00.0000”

    var jsonData = JSON.stringify({
        myDataObject: {
             TimeSpanValue : "0.00:" + $("#InputWithMinVal").val() + ":00.0"
        }
    });
    

    这个解决方案对我有效。我正在使用mvc4.0和.netframework4.0。