日期时间+;长(小时)带C#
如何在C#中添加(DateTime?)和(long?),其中long是hrs。 DateTime中预期的结果日期时间+;长(小时)带C#,c#,asp.net,C#,Asp.net,如何在C#中添加(DateTime?)和(long?),其中long是hrs。 DateTime中预期的结果 DateTime dt = DateTime.Now; long hours = 44; var dt2=dt.AddHours(hours); // uses an implicit cast from long to double // use "(double
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);
**可为空版本(紧凑型)**
**可使用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(它看起来比cast更干净),但这并没有消除在hours参数中检查null的需要。顺便说一句:我尝试了另一个。值答案,得到了参数1:无法从'long'转换为'double'——也就是说,你不能忘记空检查 **可空版本**
DateTime? dt = DateTime.Now;
long? hours = 44;
if(hours==null) hours=0;
DateTime? dt2 = (dt == null) ? null : (DateTime?) ((DateTime) dt).AddHours(hours);
**可为空版本(紧凑型)**
**可使用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(它看起来比cast更干净),但这并没有消除在hours参数中检查null的需要。顺便说一句:我尝试了另一个。值回答,得到了参数1:无法从“long”转换为“double”——也就是说,你不能忘记空检查。假设你的
日期时间
是myDt
并且你的long是myLong
,这应该可以:
myDt.AddHours((double)myLong);
假设您的
DateTime
是myDt
并且您的long是myLong
,这应该可以工作:
myDt.AddHours((double)myLong);
注意AddHours需要一个double,所以我们需要将它转换为double
long? hours = 1;
DateTime? d = new DateTime?();
d.Value.AddHours((double) hours);
请注意,AddHours需要一个双精度,因此我们需要将其转换为双精度。您应该查看这些行
long? hours = 1;
DateTime? d = new DateTime?();
d.Value.AddHours((double) hours);
DateTime? dt2 = DateTime.Now;
long? lng = 5L;
if (dt2.HasValue)
dt2 = dt2.Value.AddHours(lng ?? 0);
你应该在这些线上结账
DateTime? dt2 = DateTime.Now;
long? lng = 5L;
if (dt2.HasValue)
dt2 = dt2.Value.AddHours(lng ?? 0);
可能不应该使用long?s:可能使用timespan?…DateTime.AddHours();不要做这项工作?有没有可能使用cultureInfo?可能不应该使用long?s:可能使用timespans?…DateTime.AddHours();不要做这项工作?cultureInfo有可能吗?首先,你不需要显式转换为双倍,直接通过
小时将很好;其次,您需要将AddHours
调用的结果分配给某个对象:例如,DateTime dt2=dt.AddHours(hours)
我相信这两种类型都是可以为null的。感谢LukeH和Vendetta指出了我以前的任务。注意,如果(hours==null)hours=0和hours,你可以去掉??0
使用hours.GetValueOrDefault()
进行检查:@LukeH:可空长空的默认值不是吗?首先,您不需要显式转换为double
,直接传递hours
就可以了;其次,您需要将AddHours
调用的结果分配给某个对象:例如,DateTime dt2=dt.AddHours(hours)
我相信这两种类型都是可以为null的。感谢LukeH和Vendetta指出了我以前的任务。注意,如果(hours==null)hours=0和hours,你可以去掉??0
使用hours.GetValueOrDefault()
进行检查:@LukeH:可为null的长空值不是默认值吗?