web-dev-qa-db-ja.com

DateTimeを変換する方法は? DateTimeへ

ヌル可能なDateTime(DateTime?)をDateTimeに変換したいのですが、エラーが発生しています:

タイプ「System.DateTime」を暗黙的に変換できませんか? 「System.DateTime」へ。明示的な変換が存在します(キャストを見逃していますか?)

私は次を試みました:

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

null-coalescing operator を使用します。これはまさにこの目的のために設計されています。

それを使用すると、このコードになります。

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

MSはすでにこのためのメソッドを作成しているため、null合体演算子を使用する必要はありません。機能に違いはありませんが、専門家ではない人でも簡単に一目で把握できます。

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

これを試して

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

NULL可能DateTimeの Value プロパティを呼び出す必要があります。これはDateTimeを返します。

UpdatedDateDateTime?であると仮定すると、これは動作するはずです:

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

コードを少し読みやすくするために、nullチェックの代わりに HasValue プロパティを使用できます。

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

これにより、さらに簡潔にすることができます。

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

単純なキャストを使用できます。

DateTime dtValue = (DateTime) dtNullAbleSource;

Leandro Tuponeが言ったように、varがnullであるかどうかを確認する

16
César León

これは、Nullable Date/Timeでビューを埋めるプレゼンター内で使用したスニペットです

memDateLogin = m.memDateLogin ?? DateTime.MinValue
6
Ravi Ram

以下はどうですか:

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

Nullable(T)Properties を試すこともできます:

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

むしろ、次の方がはるかに優れている

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

これを試して:

DateTime UpdatedTime = (DateTime)_objHotelPackageOrder.UpdatedDate == null ? DateTime.Now : _objHotelPackageOrder.UpdatedDate.Value;
0
DateTime UpdatedTime = _objHotelPackageOrder.HasValue ? _objHotelPackageOrder.UpdatedDate.Value : DateTime.Now;
0
Harsh Vyas