Есть ли способ сохранить промежуток времени и манипулировать им, принимая во внимание длины месяцев, високосных лет и т. Д.?

StackOverflow https://stackoverflow.com/questions/1608175

Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top