Uso de lapsos de tiempo (Промежуток) en JavaScript

Tengo un nodo de ODATA, el cual automáticamente arroja datos en formato Json.

Una de las propiedades en este objeto, contiene un lapso de tiempo ISO 8601, pues se рода utilizando TimeSpan (de .NET)

Por ejemplo, ООН lapso de 7 хор se сериализирует así:

"PT7H"

Consumo esta API desde клиент ООН перезвездообразные хоры en AngularJs y necesito sumar y y minutos, y JavaScript никакой tiene un tipo de dato nativo para TimeSpan.

Ниндзя Ustedes que son de JavaScript ¿Cómo manejan este tipo de situaciones? Es decir, ¿Cómo convierto ese formato ООН objeto "amigable" de JavaScript el cual эй pueda usar?

¿Cuál librería es la recomendada? ¿moment.js? ¿date.js?

Aquí unos intentos míos que dan lástima:

var resultado=JSON.parse(valorTS); //mismo valor
var resultado=Date(valorTS); //Invalid date

(Misma pregunta: https://stackoverflow.com/questions/33893265/how-to-deserialize-json-timespan-in-javascript)

-1
задан 23.05.2017, 15:39
2 ответа

Moment.js выносит периоды времени времени Международная организация по стандартизации 8601 (равно как TimeSpan C#), называет durations . Включи операции bÃ: sicas: суммировать и оставаться. Если ты уменьшаешь даты, ты получаешь durations, если высшие даты и durations ты получаешь даты, если durations ты получаешь суммы / вычитания durations, если высшие даты... ты не можешь, равно как DateTime и TimeSpan c#.

Если снаружи tú не invertir¦ - в ценное время в разрабатывании чего-то, что сделано, и подопри эту довольно сделано, как Moment.js - кроме того, что это будет обучение-.

// ahora mismo 
var ahora = moment();
// lapso de tiempo de 7 horas...
var timeSpan = moment.duration('PT7H');

// los sumamos... 7 horas en el futuro
alert(ahora.add(timeSpan).format());
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.2/moment.min.js"></script>
3
ответ дан 03.12.2019, 22:57
  • 1
    Тебя один (a) гений, СПАСИБО!!!!! –  The One 04.03.2016, 03:38
  • 2
    buení simo, я habí в данный из-за сделанного, из-за вопроса, который moment не tení в это. –  eloyesp 04.03.2016, 04:33

Â: Из-за qué не использовать situaci¦n, чтобы создавать librer¦ - в?

, Если то, что querés он состоит в том, чтобы мочь складывать и уменьшать эту стоимость уже было между ними, и с dates s¦lo ты нуждаешься в двух функциях (он суммирует и остается).

module.exports = TimeSpan;

function TimeSpan (text) {
  if (this instanceof TimeSpan) {
    // magia para parsear el string "PT7H"
    this.horas = horas;
  } else {
      return new TimeSpan(text);
  }
}

TimeSpan.prototype.add = function (timespan_or_date) {
  // magia para sumar timespans
}
0
ответ дан 03.12.2019, 22:57