Vraag Hoe DateTime te converteren? tot DateTime


Ik wil een nullable DateTime converteren (DateTime?) naar een DateTime, maar ik krijg een foutmelding:

Kan het type 'System.DateTime? Niet impliciet converteren?' naar   'System.DateTime'. Er bestaat een expliciete conversie (ontbreekt u een   gegoten?)

Ik heb het volgende geprobeerd:

DateTime UpdatedTime = (DateTime)_objHotelPackageOrder.UpdatedDate == null 
    ? DateTime.Now : _objHotelPackageOrder.UpdatedDate;

134
2017-07-07 11:46


oorsprong


antwoorden:


U wilt de gebruiken nul-coalescerende operator, dat is ontworpen voor precies dit doel.

Als je het gebruikt, krijg je deze code.

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate ?? DateTime.Now;

264
2017-07-07 11:54



MS heeft hier al een methode voor gemaakt, dus je hoeft de niet-coalesceeroperator niet te gebruiken. Geen verschil in functionaliteit, maar het is voor niet-experts gemakkelijker om alles in één oogopslag te krijgen.

DateTime updatedTime = _objHotelPackageOrder.UpdatedDate.GetValueOrDefault(DateTime.Now);

77
2017-07-07 12:29



Probeer dit

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate ?? DateTime.Now;

39
2017-07-07 11:50



Je moet de Waarde eigendom van de nullable DateTime. Hiermee wordt een DateTime geretourneerd.

In de veronderstelling dat UpdatedDate is DateTime?, dan zou dit moeten werken:

DateTime UpdatedTime = (DateTime)_objHotelPackageOrder.UpdatedDate == null ? DateTime.Now : _objHotelPackageOrder.UpdatedDate.Value;

Om de code een beetje gemakkelijker te lezen te maken, kunt u de HasValue eigenschap in plaats van de null controleren:

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate.HasValue
                          ? _objHotelPackageOrder.UpdatedDate.Value
                          : DateTime.Now;

Dit kan dan nog beknopter worden gemaakt:

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate ?? DateTime.Now;

15
2017-07-07 11:49



U kunt een eenvoudige cast gebruiken:

DateTime dtValue = (DateTime) dtNullAbleSource;

Zoals Leandro Tupone zei, moet je controleren of de var null eerder is


7
2017-09-06 14:02



Hoe zit het met het volgende:

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate.HasValue ? _objHotelPackageOrder.UpdatedDate.value : DateTime.Now;

6
2017-07-07 11:50



Hier is een fragment dat ik in een Presenter heb gebruikt om een ​​weergave te vullen met een Verplichte Datum / Tijd

memDateLogin = m.memDateLogin ?? DateTime.MinValue

5
2017-07-12 05:01



Je kunt het ook proberen Nullable (T) Properties:

DateTime UpdatedTime = _objHotelPackageOrder.UpdatedDate.HasValue 
    ? DateTime.Now : _objHotelPackageOrder.UpdatedDate.Value;

3
2017-09-26 12:31