在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的date
和time
都是typesDateTime
请注意,添加时间到date不是你最大的问题在这里。 正如@Reed Copsey所提到的,您只需从date创build一个DateTime,然后添加时间。
但是,您需要确保iSeriesdate和时间(最可能是Unix时间)与.Net表示forms具有相同的表示forms。 因此,您最有可能需要将其转换为1970年1月1日的DateTime。
不能简单地将date部分和时间部分格式化为单独的string,然后将它们连接在一起? 然后,您可以将stringparsing回DateTime对象