Есть ли способ сохранить промежуток времени и манипулировать им, принимая во внимание длины месяцев, високосных лет и т. Д.? - PullRequest
1 голос
/ 22 октября 2009

Я как раз собирался написать это сам, но я знаю, что это должно существовать, и мне просто удается избежать всех ключевых слов Google, которые привели бы меня прямо к этому.

Я бы искал что-то вроде DDDMMMYYY, где D, M, Y - количество дней, месяцев и лет. Таким образом, 00103000 будет означать интервал в три месяца и один день, или 000000001 будет означать интервал в один год. В идеале этот формат также должен иметь стандартный способ его применения, который мог бы учитывать все подводные камни расчета временного интервала, такие как различное количество дней в месяце, високосные годы и т. Д.

Я не ищу способ вычисления промежутка времени между двумя известными временными метками, как это было задано здесь ( Рассчитать относительное время в C # ), я ищу что-то вроде определенного формата строки, который я могу хранилище, которое будет указывать промежуток времени, который будет использоваться для определения второй неизвестной даты из известной.

Например, используя мой вымышленный формат, приведенный выше: если бы я сказал «вычислите, какая дата будет 00103000 с 15 сентября 2009 года», то получится «16 декабря 2009 года», то есть через три месяца и один день после 15 сентября.

Ответы [ 2 ]

4 голосов
/ 22 октября 2009

Я бы порекомендовал посмотреть формат ISO 8061 для продолжительности. Это не только просто анализ и применение к определенной дате, это хорошо известный стандарт с большим количеством доступных ресурсов.

Определение длительности по двум моментам времени немного сложнее, но только потому, что без ввода данных из приложения неясно, составляет ли 1 марта-1 июня 3 месяца или 92 дня. Тем не менее, формат может выражать либо одинаково хорошо, а также, например, 0,25 года.

2 голосов
/ 22 октября 2009

Простейшим и наиболее распространенным представлением этого является числовое значение: количество секунд в промежутке времени (которое может быть или не быть дробным в зависимости от ваших потребностей). Многие временные библиотеки уже представляют время как секунды, начиная с эпохи , поэтому это делает сложение и вычитание времени тривиальным. Единственной серьезной проблемой является переполнение (например, ошибка 2038 года ).

...