Я получаю данные из iSeries, где существует отдельная дата и время поля. Я хочу присоединиться к ним в поле DateTime в моем проекте C#. Я не вижу способ добавить только время к полю DateTime. Как Вы предложили бы выполнить это?
Как они хранятся? Предполагая, что часть даты сохраняется как DateTime
полуночи рассматриваемого дня, а время - TimeSpan
, вы можете просто добавить их.
DateTime date = ...;
TimeSpan time = ...;
DateTime result = date + time;
Вы можете добавить 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
}
Обратите внимание, что добавление времени к дате - не самая большая проблема. Как упоминал @Reed Copsey, вы просто создаете DateTime из даты, а затем . Добавьте
время.
Однако вам необходимо убедиться, что дата и время iSeries (скорее всего, время Unix) находятся в том же представлении, что и представление .Net. Таким образом, вам, скорее всего, потребуется преобразовать его, также добавив к DateTime от 1 января 1970 года.
Не могли бы вы просто отформатировать часть даты и часть времени как отдельные строки, а затем соединить их вместе? Затем вы можете преобразовать строку обратно в объект DateTime
Вы можете сделать это довольно легко:
DateTime dateOnly;
DateTime timeOnly;
...
DateTime combined = dateOnly.Date.Add(timeOnly.TimeOfDay);
TimeOfDay
возвращает TimeSpan
, который вы затем добавьте к дате.
Изменить (спасибо комментаторам ниже) - на всякий случай используйте dateOnly.Date
, чтобы обеспечить только часть даты.
Вы можете легко построить TimeSpan из вашего поля «время».
Получив это, просто выполните:
TimeSpan time = GetTimeFieldData();
dateField = dateField.Add(time);
Datetime date = new DateTime(Date1.Year, Date1.Month, Date1.Day, Time1.Hour, Time1.Minute, Time1.Second);