Как переопределить значение DateTime Abp.Timing.Clock
?Все проекты используют пакеты NuGet.Я не могу изменить или отредактировать NuGet и выпустить свой собственный nuget.dll
, потому что тогда весь проект выдаст «Ошибка, отсутствует ссылка на сборку».Так как именно я могу перемещаться между UTC и Local?
Официальная ссылка говорит о том, что вы можете изменять ВСЕ Clock.Now
в глобальном масштабе по всему проекту.Но никогда не указывайте, как изменять на выбор.
Обычно это делается в начале приложения (сделайте это в Application_Start веб-приложения).
А также:
ABP автоматически нормализует DateTimes, полученные из базы данных на основе текущего поставщика тактовых импульсов, при использовании модулей EntityFramework или NHibernate.
Но как насчет ситуаций, когда я хочу извлечь значение из базы данных, которая хранится как UTC , в то время как другие значения Local и наоборот?
Как в чатедемо использует Clock.Now
, но не объясняет никакой механики.Если сообщение отправляется в чате в моем локальном 7 утра, будет ли оно отображаться как 7 утра для человека, читающего его на другом конце света?
Создатели говорят:
... если вы хотите поддерживать пользователей с несколькими часовыми поясами, вам необходимо сохранить настройку часового пояса для пользователей.Таким образом, вы можете использовать этот параметр.
Но весь разговор был о JavaScript, а не о хранении и чтении из базы данных со значениями UTC / Local.
Могу ли я лучшепросто удалить все экземпляры Clock.Now
и использовать вместо него DateTime.Now/UTC
?Как насчет остальной части сборки NuGet, которая использует Clock.Now
?
Часы - это основной класс, используемый для работы со значениями DateTime.Он определяет следующие статические свойства и методы ...
Таким образом, вместо использования DateTime.Now
мы используем Clock.Now
, который абстрагирует его ...
Действительно хотелось быеще несколько ресурсов и информации по этому вопросу.Два абзаца текста на самом деле не делают достаточно, чтобы поддержать мои опасения.Мне нужно больше информации о EntityFramework / Database и меньше о JavaScript .
Редактировать в ответ на @ aaron's answer .Я не хотел пытаться втиснуть это в текст комментария.
public ChatMessage(
UserIdentifier user,
UserIdentifier targetUser,
ChatSide side,
string message,
ChatMessageReadState readState,
Guid sharedMessageId,
ChatMessageReadState receiverReadState)
{
UserId = user.UserId;
TenantId = user.TenantId;
TargetUserId = targetUser.UserId;
TargetTenantId = targetUser.TenantId;
Message = message;
Side = side;
ReadState = readState;
SharedMessageId = sharedMessageId;
ReceiverReadState = receiverReadState;
CreationTime = Clock.Now;
}
Где в этой записи я мог бы изменить, если этот запрос Clock.Now
является UTC или локальным?Не затрагивая какой-либо код в другом месте проекта.Clock.Now
- это статический метод, а также Clock.Provider
.Выбор, который я упоминал ранее, заключался в том, чтобы различать несколько экземпляров записей в базе данных, следуя различным правилам или шаблонам.Не могли бы вы помочь прояснить эту путаницу?Спасибо.
Может быть, для моего Chat
я хочу, чтобы все значения DateTime были локальными, но для моей системы входа в систему я хочу, чтобы все значения DateTime были в формате UTC.Как бы я пошел об отделении одного статического Clock.Now
от другого?Система часов везде одинакова в коде.Но что, если я хочу, чтобы это было по-другому в определенных местах?Мол, а что если мне нужно локальное время сервера, а не время пользователя?Что, если я хотел бы узнать местное время пользователя, но затем дать им DateTime для другого часового пояса?Что если я захочу записать местное время, но знаю, какое местное я записываюКак мне сделать это для ONE вместо всех?