在C#中将日期和时间加入日期时间

时间:2010-06-29 16:09:34

标签: c# datetime

我正从iSeries中检索数据,其中有一个单独的日期和时间字段。我想将它们加入到我的C#项目的DateTime字段中。我没有看到为DateTime字段添加时间的方法。你会怎么建议完成这个?

8 个答案:

答案 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);

假设变量datetime都属于DateTime类型

答案 6 :(得分:0)

请注意,在此处添加时间不是您最大的问题。正如@Reed Copsey所提到的,你只需要从日期开始创建一个DateTime,然后再创建.Add时间。

但是,您需要确保iSeries的日期和时间(最可能是Unix时间)与.Net表示的表示形式相同。因此,您最有可能需要通过将其添加到1970年1月1日的DateTime来进行转换。

答案 7 :(得分:-3)

你不能简单地将日期部分和时间部分格式化为单独的字符串,然后将它们连接在一起吗?然后,您可以将字符串解析回DateTime对象