我正从iSeries中检索数据,其中有一个单独的日期和时间字段。我想将它们加入到我的C#项目的DateTime字段中。我没有看到为DateTime字段添加时间的方法。你会怎么建议完成这个?
答案 0 :(得分:85)
你可以很容易地做到这一点:
DateTime dateOnly;
DateTime timeOnly;
...
DateTime combined = dateOnly.Date.Add(timeOnly.TimeOfDay);
TimeOfDay
会返回TimeSpan
,然后您将其添加到日期。
编辑(感谢下面的评论者) - 为了安全起见,请使用dateOnly.Date
确保仅限日期部分。
答案 1 :(得分:62)
它们是如何存储的?假设日期部分存储为相关日期午夜的DateTime
且时间为TimeSpan
,您只需添加它们即可。
DateTime date = ...;
TimeSpan time = ...;
DateTime result = date + time;
答案 2 :(得分:8)
您可以轻松地从“时间”字段构建TimeSpan。
一旦你有了,就这样做:
TimeSpan time = GetTimeFieldData();
dateField = dateField.Add(time);
答案 3 :(得分:4)
Datetime date = new DateTime(Date1.Year, Date1.Month, Date1.Day, Time1.Hour, Time1.Minute, Time1.Second);
答案 4 :(得分:2)
您可以将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
}
答案 5 :(得分:2)
这应该做:
var output = date.Date + time.TimeOfDay;
或
var output = new DateTime(date.Year, date.Month, date.Day,
time.Hour, time.Minute, time.Second);
假设变量date
和time
都属于DateTime
类型
答案 6 :(得分:0)
请注意,在此处添加时间不是您最大的问题。正如@Reed Copsey所提到的,你只需要从日期开始创建一个DateTime,然后再创建.Add
时间。
但是,您需要确保iSeries的日期和时间(最可能是Unix时间)与.Net表示的表示形式相同。因此,您最有可能需要通过将其添加到1970年1月1日的DateTime来进行转换。
答案 7 :(得分:-3)
你不能简单地将日期部分和时间部分格式化为单独的字符串,然后将它们连接在一起吗?然后,您可以将字符串解析回DateTime对象