Cache.Add абсолютный срок действия - на основе UTC или нет?
Примеры дляCache.Add использованияDateTime.Now.Add
чтобы вычислить срок действия, то есть он передает:
DateTime.Now.AddSeconds(60)
в качестве значенияabsoluteExpiration
parameter.I»
Я думал, что вычисление его относительноDateTime.UtcNow
было бы более правильно [так как нет никакой двусмысленности, если летнее время начинается в промежуточное время между настоящим моментом и точкой истечения срока].
До введенияDateTimeKind
Яя бы догадался, чтоНекоторые уродливые хаки в управлении кешем заставляют его делать что-то подходящее, если время не было временем UTC.
В .NET 2.0 и более позднихЯ предполагаю, что он должен обрабатыватьDateTime
рассчитывается какDateTime.UtcNow.AddSeconds(60)
правильно, учитывая, что он имеетDateTime.Kind
использовать в качестве входных данных в своих выводах.
уверенно использовалDateTime.UtcNow
в качестве базы в течение многих лет, но не смог придумать обоснование того, что это определенно правильная вещь, если ничего не указывать на то, что документация вводит в заблуждение более 4 лет.
Вопросы?
Несмотря на то, что я много гулял и гуглил, мне не удалось найти какого-либо авторитетного обсуждения этого вопроса от MS - может кто-нибудь найти что-нибудь по этому поводу?Есть ли причина, по которой использование UtcNow не будет более правильным и / или безопасным?(Да, я мог бы просмотреть источник и / или рефлекторd источник, но я ищу полное снижение за ударом!) Я