代码之家  ›  专栏  ›  技术社区  ›  Mike Wills

在C中连接Date和Time到DateTime#

  •  50
  • Mike Wills  · 技术社区  · 14 年前

    我正在从iSeries中检索数据,其中有单独的日期和时间字段。我想将它们加入到我的C#项目的DateTime字段中。我看不出一种方法可以只在DateTime字段中添加一个时间。你建议怎么做?

    8 回复  |  直到 14 年前
        1
  •  84
  •   Adam Robinson    14 年前

    它们是如何储存的?假设日期部分存储为 DateTime 一天的午夜,时间是 TimeSpan ,您可以添加它们。

    DateTime date = ...;
    TimeSpan time = ...;
    
    DateTime result = date + time;
    
        2
  •  108
  •   David M    8 年前

    你可以很容易地做到这一点:

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

    TimeOfDay TimeSpan ,然后将其添加到日期中。

    dateOnly.Date

        3
  •  8
  •   Reed Copsey    14 年前

    你可以很容易地构造一个 TimeSpan

    一旦你做到了,就做:

    TimeSpan time = GetTimeFieldData();
    dateField = dateField.Add(time);
    
        4
  •  5
  •   Saurabh Gaur    8 年前
    Datetime date = new DateTime(Date1.Year, Date1.Month, Date1.Day, Time1.Hour, Time1.Minute, Time1.Second); 
    
        5
  •  2
  •   Seattle Leonard    14 年前

    您可以添加 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
  •  2
  •   Nerdroid    9 年前

    这应该做到:

    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
  •  0
  •   Franci Penov    14 年前

    请注意,将时间添加到日期并不是最大的问题。正如@Reed Copsey提到的,您只需从日期创建一个DateTime,然后 .Add

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

        8
  •  -3
  •   Julius A    14 年前