Оптимизация альтернатив DateTime. Теперь

Во-первых: на самом деле, defined? Второй оператор .

: если я понимаю Ваш вопрос правильно, способ сделать это с этой идиомой Ruby:

perex ||= true

Это присвоится верный для perex, если это будет не определено или nil. Это не точно, что делает Ваш пример, так как Ваш не оценивает присвоение, когда значение nil, но если Вы полагаетесь на это тогда, по-моему, не видя его, Вы не пишете код разъединения.

Редактирование : Как отмеченный Honza, оператор выше заменит значение perex, когда это будет false. Тогда я предлагаю следующее для перезаписи минимального количества строк:

perex ||= perex.nil?  # Assign true only when perex is undefined or nil

24
задан 3 revs, 3 users 100% 26 October 2012 в 08:33
поделиться

3 ответа

Не могли бы вы просто используйте DateTime.UtcNow и конвертируйте только в местное время, когда данные представлены? Вы уже определили, что DateTime.UtcNow намного быстрее и устранит любую двусмысленность в отношении летнего времени.

26
ответ дан 28 November 2019 в 23:37
поделиться

Чтобы ответить в обратном порядке:

2) Я не могу придумать более быстрого способа.

1) Стоит проверить, есть ли в конвейере какие-либо улучшения инфраструктуры, такие как они только что объявили для System.IO

Трудно быть уверенным в безопасности, но это то, что требует множества модульных тестов. На ум приходит переход на летнее время. Системный, очевидно, очень закален в боях, а ваш - нет.

2
ответ дан 28 November 2019 в 23:37
поделиться

Одно различие между результатом

DateTime.Now

и

DateTime.UtcNow + LocalUtcOffset 

заключается в значении свойства Kind - Local vs Utc соответственно. Если полученный DateTime передается в стороннюю библиотеку, рассмотрите возможность возврата

DateTime.SpecifyKind(DateTime.UtcNow + LocalUtcOffset, DateTimeKind.Local)
8
ответ дан 28 November 2019 в 23:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: