Являются ли они существующим методом в.Net C#, который добавляет григорианскую длительность к дате начала?

Я искал существующие методы в.Net C#, которые добавляют григорианскую продолжительность ISO 8681 к начальной дате, чтобы придумать конечную дату.

Например:

Start Date : 2007-03-01
Duration   : P1Y2M10D
End Date   : (Start Date + Duration) = 2008-05-11  // Pseudocode
           : P1Y2M10D + 2007-03-01 = 2008-05-11    // Actual Representation

Есть ли какой-либо существующий метод в.Net, который уже делает это автоматически, прежде чем я сделаю это самостоятельно? "Время обработки сложно, поэтому я предпочел использовать существующий метод, если таковой имеется".

Примечание: я исследовал эту функциональность, но не могу найти ее в интернете даже в визуальной студии. Я опустил другое обозначение, например, Time (T), для снижения точности, но его можно завершить, например, для полной длительности P1Y2M10DT2H30M.

1 ответ

Решение

Мой проект Noda Time способен анализировать длительности ISO-8601 как Period объекты, которые затем могут быть использованы для календарной арифметики с LocalDate или же LocalDateTime ценности. Например:

var pattern = PeriodPattern.NormalizingIsoPattern;
var text = "P1Y2M10D";
var start = new LocalDate(2007, 3, 1);
var period = pattern.Parse(text).Value;
var end = start + period;
Console.WriteLine("{0:yyyy-MM-dd}", end); // 2008-05-11

Я не верю, что в обычном.NET есть что-то эквивалентное.

Другие вопросы по тегам