DateTime + long (hrs) with C#
本文关键字:with hrs long DateTime | 更新日期: 2023-09-27 18:03:39
如何在C#中添加(DateTime?(和(long?(,其中long是小时。DateTime 中预期的结果
DateTime dt = DateTime.Now;
long hours = 44;
var dt2=dt.AddHours(hours); // uses an implicit cast from long to double
// use "(double)hours" for an explicit cast
**空版本**
DateTime? dt = DateTime.Now;
long? hours = 44;
if(hours==null) hours=0;
DateTime? dt2 = (dt == null) ? null : (DateTime?) ((DateTime) dt).AddHours(hours);
**空版本(紧凑型(**
DateTime? dt = DateTime.Now;
long? hours = 44;
DateTime? dt2 = (dt == null) ? null : (DateTime?) dt.Value.AddHours(hours??0);
**可为null,带有if语句**
DateTime? dt = DateTime.Now;
long? hours = 44;
if(hours==null) hours=0;
DateTime? dt2 = null;
if (dt == null)
dt2 = (DateTime?) ((DateTime) dt).AddHours(hours);
else
dt2 = null;
跟进:
在其他答案中,我喜欢使用.Value(它看起来比强制转换干净一点(,但这并不能消除在hours参数中检查null的必要性。顺便说一句:我尝试了另一个。值回答了,得到了参数1:无法从"long?"转换到"double",即不能忘记空检查。
if (myNullableDate != null && myNullableHours != null)
{
myNullableDate = myNullableDate.Value.AddHours((double)myNullableHours) ;
}
您应该查看
DateTime? dt2 = DateTime.Now;
long? lng = 5L;
if (dt2.HasValue)
dt2 = dt2.Value.AddHours(lng ?? 0);
假设你的DateTime
是myDt
,你的long是myLong
,这应该有效:
myDt.AddHours((double)myLong);
DateTime datetime;
long hours = 123;
// ...
datetime = datetime.AddHours((double)hours);
请注意,AddHours需要一个double,所以我们需要将其转换为那个。
long? hours = 1;
DateTime? d = new DateTime?();
d.Value.AddHours((double) hours);