在C#中将date和时间joinDateTime

我从具有单独的date和时间字段的iSeries中检索数据。 我想将它们join到我的C#项目中的DateTime字段中。 我没有看到添加一个时间到DateTime字段的方法。 你会怎么build议完成这个?

他们如何被储存? 假设date部分被存储为当天午夜的date时间,时间是TimeSpan ,您可以添加它们。

 DateTime date = ...; TimeSpan time = ...; DateTime result = date + time; 

你可以很容易地做到这一点:

 DateTime dateOnly; DateTime timeOnly; ... DateTime combined = dateOnly.Date.Add(timeOnly.TimeOfDay); 

TimeOfDay返回一个TimeSpan ,然后添加到date。

编辑(感谢下面的评论) – 为了安全起见,请使用dateOnly.Date来确保date部分。

你可以很容易地从你的“时间”字段构build一个TimeSpan 。

一旦你有了,就做:

 TimeSpan time = GetTimeFieldData(); dateField = dateField.Add(time); 
 Datetime date = new DateTime(Date1.Year, Date1.Month, Date1.Day, Time1.Hour, Time1.Minute, Time1.Second); 

您可以将TimeSpan添加到DateTime并写入如下所示的内容。

 // inside consuming function ISeriesObject obj = getMyObject(); DateTime dt = getDate(obj) + getTime(obj); private DateTime getDate(ISeriesObject obj) { //return a DateTime } private TimeSpan getTime(ISeriesObject obj) { //return a TimeSpan } 

这应该做的:

 var output = date.Date + time.TimeOfDay; 

要么

 var output = new DateTime(date.Year, date.Month, date.Day, time.Hour, time.Minute, time.Second); 

假设这两个variables的datetime都是typesDateTime

请注意,添加时间到date不是你最大的问题在这里。 正如@Reed Copsey所提到的,您只需从date创build一个DateTime,然后添加时间。

但是,您需要确保iSeriesdate和时间(最可能是Unix时间)与.Net表示forms具有相同的表示forms。 因此,您最有可能需要将其转换为1970年1月1日的DateTime。

不能简单地将date部分和时间部分格式化为单独的string,然后将它们连接在一起? 然后,您可以将stringparsing回DateTime对象