Vergleichen Sie die Daten verschiedener Zeitzonen in ASP.NET aus der DatenbankC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Vergleichen Sie die Daten verschiedener Zeitzonen in ASP.NET aus der Datenbank

Post by Anonymous »

Dies ist mein Code: < /p>

Code: Select all

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();
In der Datenbank werden die Ablaufdatum und effectiveIntateat so gespeichert:

Code: Select all

ExpirationDate: 2025-04-10 23:59:59.0000000
EffectiveDate: 2025-04-09 00:00:00.0000000
Die Zeit ist für alle Nachrichten in der Datenbank gleich, und das Datum wird vom Benutzer festgelegt. Die folgenden effektiven und vergleichbar :

Code: Select all

ExpirationDate: 2025-04-10 23:59:59.0000000
EffectiveDate:  2025-04-09 00:00:00.0000000
Der Test ist 2025-04-09 04: 00: 00.0000000

Code: Select all

DateTime test = new DateTime(2025, 4, 9, 4, 0, 0);
Die aktuelle Erziehung unter der Annahme, dass wir in EDT konvertieren, wäre

Code: Select all

2025-04-09 04:00:00.0000000

DateTime currentUserTime = ConvertToUserTimeZone(test, timeZoneInfo);
Der EffectiveIntedate und das Ablauf in EDT konvertiert wären 2025-04-08 20: 00: 00.0000000 und 2025-04-10 19: 59.0000000 , so

Code: Select all

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

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post