Как сохранить и сравнить значения даты и времени в ядре C # и asp.net? - PullRequest
0 голосов
/ 08 мая 2019

Я пишу веб-приложение, используя ядро ​​asp.net и ядро ​​Entity Framework;я хочу установить текущую дату и время для объектов БД при их создании, а затем мне нужно сравнить их с датами и временем, указанными пользователями.целевые пользователи моего приложения находятся в моей стране.DateTime.Now подходит и надежен для меня?мой местный календарь - «персидский джалали», а DateTime.Now возвращает для меня дату-время джалали. Я запутался и не уверен, могу ли я использовать даты-джалали везде в своем приложении (например, сравнения) или я должен преобразовать их в григорианский или UTC(или другой подход)?

 // a sample datetime setting for an object
_stateService.Create(new State{
 Name = "sample",
 CreateDateTime = DateTime.Now
});

// a sample datetime setting for added entities to entity framework core
var now = DateTime.Now;

var addedEntries = ChangeTracker.Entries()
           .Where(x => x.State == EntityState.Added);

foreach (var addedEntry in addedEntries)
{
   addedEntry.Property("CreateDate").CurrentValue = now;
}

// a sample comparison i used with linq
// **'from' and 'to' must be 'Jalali' or 'Gregorian'?**
var res= _paymentService.GetPayments()
.Where(p => p.CreateDate >= from && p.CreateDate <= to).ToList();

ядро ​​инфраструктуры сущностей возвращает объекты со значениями даты и времени в Jalali ..

1 Ответ

0 голосов
/ 08 мая 2019

Лучшим подходом будет сохранение всех дат в формате UTC yourDateTime.ToUniversalTime ()

Вы должны написать каждое местоположение клиента или разницу в зависимости от вашей логики. например, в Нью-Йорке его UTC-05: 00

У вас есть списки различий utc онлайн (также apis, если необходимо): https://www.countries -ofthe-world.com / мировое время zones.html

Сложность действительно зависит от вашей логики

...