Сравните даты разных часовых поясов в ASP.NET из базы данныхC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Сравните даты разных часовых поясов в ASP.NET из базы данных

Сообщение Anonymous »

Это мой код: < /p>

Код: Выделить всё

DateTime test = new DateTime(2025, 4, 9, 4, 0, 0); //instead of the it would be DateTime.UtcNow
TimeZoneInfo timeZoneInfo = getUserTimeZoneInfo(); //Converting to toronto time EDT going on

DateTime currentUserTime = ConvertToUserTimeZone(test, timeZoneInfo);
var result = (from message in dbContext.Messages
join userMap in otherContext.UserMessageMappings
.Where(u => u.UserEmail == currentUserEmail)
on message.Id equals userMap.MessageId into messageJoin
from userMapping in messageJoin.DefaultIfEmpty()
where message.IsDeleted == false
select new MessageDto
{
Id = message.Id,
FileName = message.FileName,
EffectiveDate = message.EffectiveDate,
ExpirationDate = message.ExpirationDate,
Title = message.Title,
Content = message.Content,
SecondaryTitle = message.SecondaryTitle,
SecondaryContent = message.SecondaryContent,
Region = message.Region,
CreatedBy = message.CreatedBy,
CreatedAt = message.CreatedAt
})
.AsEnumerable()
.Where(msg => msg.ExpirationDate.HasValue && msg.EffectiveDate.HasValue
currentUserTime = ConvertToUserTimeZone(msg.EffectiveDate.Value, timeZoneInfo))
.ToList();
В базе данных expirationDate и EffectiveAte хранятся так:

Код: Выделить всё

ExpirationDate: 2025-04-10 23:59:59.0000000
EffectiveDate: 2025-04-09 00:00:00.0000000
Время одинаково для всех сообщений в базе данных, и дата - это то, каким образом устанавливается пользователем. Следующий эффективный и exrydate :

Код: Выделить всё

ExpirationDate: 2025-04-10 23:59:59.0000000
EffectiveDate:  2025-04-09 00:00:00.0000000
Тест-2025-04-09 04: 00: 00.0000000

Код: Выделить всё

DateTime test = new DateTime(2025, 4, 9, 4, 0, 0);
Таким образом, CurrentUsertime При условии, что мы конвертируем в EDT, будет

Код: Выделить всё

2025-04-09 04:00:00.0000000

DateTime currentUserTime = ConvertToUserTimeZone(test, timeZoneInfo);
Таким образом, EffectiveDate и ExpiryDate преобразован в EDT, будет 2025-04-08 20: 00: 00.0000000 и 2025-04-10 19: 59: 59.0000000 , так что

Код: Выделить всё

currentUserTime >= ConvertToUserTimeZone(msg.EffectiveDate.Value, timeZoneInfo)  // returns true but
currentUserTime  

Подробнее здесь: [url]https://stackoverflow.com/questions/79565590/compare-dates-of-different-timezones-in-asp-net-from-database[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

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

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»