Соедините дату и время с DateTime в C#

Я получаю данные из iSeries, где существует отдельная дата и время поля. Я хочу присоединиться к ним в поле DateTime в моем проекте C#. Я не вижу способ добавить только время к полю DateTime. Как Вы предложили бы выполнить это?

54
задан Mike Wills 29 June 2010 в 05:09
поделиться

7 ответов

Как они хранятся? Предполагая, что часть даты сохраняется как DateTime полуночи рассматриваемого дня, а время - TimeSpan , вы можете просто добавить их.

DateTime date = ...;
TimeSpan time = ...;

DateTime result = date + time;
67
ответ дан 7 November 2019 в 07:38
поделиться

Вы можете добавить 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
}
2
ответ дан 7 November 2019 в 07:38
поделиться

Обратите внимание, что добавление времени к дате - не самая большая проблема. Как упоминал @Reed Copsey, вы просто создаете DateTime из даты, а затем . Добавьте время.

Однако вам необходимо убедиться, что дата и время iSeries (скорее всего, время Unix) находятся в том же представлении, что и представление .Net. Таким образом, вам, скорее всего, потребуется преобразовать его, также добавив к DateTime от 1 января 1970 года.

0
ответ дан 7 November 2019 в 07:38
поделиться

Не могли бы вы просто отформатировать часть даты и часть времени как отдельные строки, а затем соединить их вместе? Затем вы можете преобразовать строку обратно в объект DateTime

-3
ответ дан 7 November 2019 в 07:38
поделиться

Вы можете сделать это довольно легко:

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

TimeOfDay возвращает TimeSpan , который вы затем добавьте к дате.

Изменить (спасибо комментаторам ниже) - на всякий случай используйте dateOnly.Date , чтобы обеспечить только часть даты.

88
ответ дан 7 November 2019 в 07:38
поделиться

Вы можете легко построить TimeSpan из вашего поля «время».

Получив это, просто выполните:

TimeSpan time = GetTimeFieldData();
dateField = dateField.Add(time);
8
ответ дан 7 November 2019 в 07:38
поделиться
Datetime date = new DateTime(Date1.Year, Date1.Month, Date1.Day, Time1.Hour, Time1.Minute, Time1.Second); 
4
ответ дан 7 November 2019 в 07:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: