0 / 0 / 0
Регистрация: 25.04.2020
Сообщений: 136
|
|
1 | |
.NET Core Учет временной зоны при работе с полем времени (EF Core)30.10.2020, 16:20. Показов 1913. Ответов 7
Метки нет (Все метки)
Всем привет! Не могу понять, как правильно работать с временными полями (DateTime) – сохранять и читать их из базы с учетом временной зоны? У меня есть какой-то класс, содержащий поле DateTime. Он вроде бы отлично пишется и читается из базы (datetime/timestamp). Но как быть с временной зоной? Насколько я понял в базу записывается локальный DateTime, не происходит перевод в UTC (нулевая временная зона) или во временную зону базы.
Мой часовой пояс +3, у меня сейчас 16 часов (13 по UTC), если во временное поле экземпляра положить DateTime.Now и сохранить этот экземпляр класса в базу, то в базе я увижу 16 часов. И вот программа открыта на нескольких машинах, расположенных в разных часовых поясах, с которых ведется работа с базой, как потом работать со временем? Не зная временную зону, нельзя будет даже отсортировать эти данные по порядку, так как 16 часов по Москве (+3) наступает раньше, чем 15 в Варшаве (+1)! Да, можно в поле времени класть не DateTime.Now, а DateTime.UtcNow, но это криво. Лучше хранить даты в том часовом поясе, на который настроена база, чтобы все временные данные могли нормально коррелировать между собой, а то дата полученная CURRENT_TIMESTAMP, запишет время в часовом поясе базы. Так как правильно организовать работу со временем? Выставить нулевую временную зону (UTC) у базы и экземпляры классов должны содержать UTC время? Или какая-то синхронизация есть?
0
|
30.10.2020, 16:20 | |
Ответы с готовыми решениями:
7
индукционная варка Hansa FCEW53000 ошибки E4,E5 при работе правой зоны Как через pattern сделать форматирование временной зоны? Ошибка из-за пробела при работе с полем *FirstCap Undefined reference при работе с статическим полем класса |
|
|
30.10.2020, 16:30 | 2 |
MrKamaBullet05, в MS SQL Server есть тип данных
DATETIMEOFFSET , который работает с часовыми поясами.https://docs.microsoft.com/ru-... rver-ver15
1
|
0 / 0 / 0
Регистрация: 25.04.2020
Сообщений: 136
|
|
30.10.2020, 16:42 [ТС] | 3 |
0
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
30.10.2020, 19:28 | 4 |
Мне кажется, что время надо фиксировать как серверное (SQL-server), приводя его "туда" при записи и "обратно" при чтении.
При условии, кончено, что сам сервер "прописку" не меняет Добавлено через 3 минуты Вот вроде подходящая статья https://habr.com/ru/post/69614/
1
|
0 / 0 / 0
Регистрация: 25.04.2020
Сообщений: 136
|
|||||||||||||||||||||
31.10.2020, 01:12 [ТС] | 5 | ||||||||||||||||||||
Интересная статья, но проблема не решена.
Вот смотрите, в базе время я храню timestamp, а не datatime. Сервер с базой имеет временной пояс +3 (Москва):
1) Программа открыта на ПК с временной зоной +3 (Москва)
Все окей, временные зоны базы и ПК совпали, следовательно видим одно и тоже значение. 2) Программа открыта на ПК с временной зоной +6:30 (Янгон)
Ошибка! Я должен был увидеть все тоже время 19:00, а не 22:30, так как переменная obj.DateTime содержала одно и тоже время, но лишь финальное отображение (значение в коносоли) было подстроено под локальное время ПК. Что делать то?!
0
|
|
||||||
03.11.2020, 10:30 | 6 | |||||
MrKamaBullet05, нечто подобное в MySQL есть?
1
|
0 / 0 / 0
Регистрация: 25.04.2020
Сообщений: 136
|
|
03.11.2020, 19:49 [ТС] | 7 |
0
|
|
|
05.11.2020, 08:49 | 8 |
MrKamaBullet05, это не про изменить Это функции MS SQL Server, которые отображают время в разных представлениях, включая часовые пояса и UTC. Интерес представляет
GETUTCDATE() , она возвращает время UTC вне зависимости от часового пояса места расположения компьютера. Ну и SYSUTCDATETIME() - это дата и время UTC сервера.
1
|
05.11.2020, 08:49 | |
05.11.2020, 08:49 | |
Помогаю со студенческими работами здесь
8
Учет действий пользователя при работе с СУБД Как избавиться от вывода ToolBox при работе с собственным полем со списком на Листе Екселя Ошибка при работе с FastReport.Core Лаги при работе с Core под IIS Остановка (отставание) времени в DOS приложении при работе в ServerSocket и ClientSocket при работе с данными реального времени Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Создание макробота, как способа экономии времени и варианта ИИ.
Hrethgir 28.01.2025
Чисто теоретически, создание ИИ на ПК можно разделить на части. Создать бота отвечающего за железо (эмулирование вкл, выкл, мышь, клавиатура), другой бот осуществляет распознавание изображений,. . .
|
[Golang] 121. Best Time to Buy and Sell Stock
alhaos 28.01.2025
В этой задаче мы получаем слайс целых чисел, которые означают цену акции в разные моменты времени, и должны вернуть максимально возможную прибыль от купли продажи акции.
/ / . . .
|
Проектирование и моделирование
hw_wired 28.01.2025
Введение в моделирование
Моделирование представляет собой один из фундаментальных методов научного познания, который позволяет изучать объекты и явления через создание их упрощенных аналогов. В. . .
|
Алгоритмы и исполнители
hw_wired 28.01.2025
Введение в алгоритмы
В современном мире информационных технологий алгоритмы играют основополагающую роль в решении различных задач и автоматизации процессов. Алгоритм представляет собой точную. . .
|
Хранение информации
hw_wired 28.01.2025
Введение: Роль систем хранения информации в современном мире
В современную эпоху цифровых технологий эффективное хранение информации становится одним из ключевых факторов успешного развития любой. . .
|
Обработка числовой информации
hw_wired 28.01.2025
Введение в обработку числовой информации
В современном мире обработка числовой информации стала неотъемлемой частью как профессиональной деятельности, так и повседневной жизни. Электронные таблицы. . .
|
Мультимедиа
hw_wired 28.01.2025
Введение в мультимедийные технологии
В современном мире мультимедийные технологии стали неотъемлемой частью нашей жизни, проникнув во все сферы человеческой деятельности. Термин "мультимедиа". . .
|
Обработка текстовой информации
hw_wired 28.01.2025
Введение в обработку текстовой информации
В современном мире обработка текстовой информации играет фундаментальную роль в различных сферах человеческой деятельности. Текстовые редакторы стали. . .
|
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику
Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
|
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику
В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
|
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера
Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
|
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды
В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
|