Программа простая, прототип бэк-энда для киоска парковки. Надо посчитать время выезда машины с парковки, но почему-то при попытке подсчитать разницу в минутах с одним из полей выдаёт ошибку:
public bool TryLeaveParkingWithTicket(int ticketNumber, out ParkingSession session)
{
session = ActiveParkingSessions[ticketNumber];
double parkingTime;
if(session.PaymentDt != null)
{
parkingTime = (DateTime.Now - session.PaymentDt).TotalMinutes;
}
else {
parkingTime = (DateTime.Now - session.EntryDt).TotalMinutes;
}
if(parkingTime < freeLeavePeriod) {
session.ExitDt = DateTime.Now;
ActiveParkingSessions.Remove(session);
PastParkingSessions.Add(session);
return true;
}
else {
session = null;
}
return false;
throw new NotImplementedException();
}
Текст ошибки: "TimeSpan?" не содержит определения "TotalMinutes", и не удалось найти доступный метод расширения "TotalMinutes", принимающий тип TimeSpan? в качестве первого аргумента (возможно пропущена директива using или ссылка на сборку). " ошибка в строке
parkingTime = (DateTime.Now - session.PaymentDt).TotalMinutes;
Сам класс сессии:
class ParkingSession
{
private DateTime entryDt;
private DateTime? paymentDt;
private DateTime? exitDt;
private decimal? totalPayment;
private string carPlateNumber;
private int ticketNumber;
// Date and time of arriving at the parking
public DateTime EntryDt {
get { return entryDt; }
set {
this.entryDt = value;
}
}
// Date and time of payment for the parking
public DateTime? PaymentDt {
get { return paymentDt; }
set {
this.paymentDt = value;
}
}
// Date and time of exiting the parking
public DateTime? ExitDt {
get { return exitDt; }
set {
this.exitDt = value;
}
}
// Total cost of parking
public decimal? TotalPayment {
get { return totalPayment; }
set{
this.totalPayment = value;
}
}
// Plate number of the visitor's car
public string CarPlateNumber {
get { return carPlateNumber; }
set{
this.carPlateNumber = value;
}
}
// Issued printed ticket
public int TicketNumber {
get { return ticketNumber; }
set{
this.ticketNumber = value;
}
}
public ParkingSession(DateTime _EntryDt, string _CarPlateNumber, int _TicketNumber)
{
EntryDt = _EntryDt;
TicketNumber = _TicketNumber;
CarPlateNumber = _CarPlateNumber;
TotalPayment = null;
ExitDt = null;
PaymentDt = null;
}
}
DateTime? PaymentDt
- это nullable DateTime, в нем может лежать либо DateTime, либо null. Соответственно, при вычитании
DateTime.Now - session.PaymentDt
вы получаете nullable TimeSpan - в котором лежит или TimeSpan, или null.
Если вы точно знаете, что к этому моменту PaymentDt у вас не null - явно напишите в коде обращение именно к DateTime:
parkingTime = (DateTime.Now - session.PaymentDt.Value).TotalMinutes;
Если при этом оно может быть null при обычной работе - добавьте проверку на == null чуть выше и напишите код для случая, когда PaymentDt не задан.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть некое окно с разметкой Mainxaml, и есть некий файл с отдельно свёрстанным элементом(пусть будет Button
Всем привет, столкнулся с маленькой проблемойЕсть связанные таблицы, данные из них я получил, но мне нужно посчитать записи за 2018 год
Нужно вывести данные массива (дни недели)Выходные - выделить жирным шрифтом, причем текущий день - выделить курсивом
Полистал первые 2 страницы в гугле с этой проблемой, ничего не помоглоЖдать 9 часов не вариант =(