Подтвердить что ты не робот

Регистрация и время до DateTime в С#

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

4b9b3361

Ответ 1

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

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

DateTime result = date + time;

Ответ 2

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

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

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

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

Ответ 3

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

Как только вы это сделаете, просто выполните:

TimeSpan time = GetTimeFieldData();
dateField = dateField.Add(time);

Ответ 4

Datetime date = new DateTime(Date1.Year, Date1.Month, Date1.Day, Time1.Hour, Time1.Minute, Time1.Second); 

Ответ 5

Вы можете добавить 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
}

Ответ 6

Это должно сделать:

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

Ответ 7

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

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

Ответ 8

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