代码之家  ›  专栏  ›  技术社区  ›  JYelton Melchior Blausand

当日期是日期时间而时间是字符串时,将日期和时间合并

  •  40
  • JYelton Melchior Blausand  · 技术社区  · 14 年前

    我正在使用一个旧的mysql数据库,其中日期(没有时间)存储为datetime,时间存储为字符串(没有日期)。

    在C#中,我有一个DateTime,其值如下 2010-06-25 12:00:00 AM 一个字符串的值 15:02 .

    在没有大量开销的情况下,最简洁的方法是什么?

    我试过几种方法,包括:

    DateTime NewDateTime = DateTime.Parse(OldDateTime.ToString("yyyy-MM-dd ") + TimeString);
    

    我不喜欢将现有的DateTime转换为字符串并附加时间。

    我可以将时间字符串转换为日期,但是我得到今天的日期,并且将它作为一个记号添加到旧的datetime中是不正确的。

    注意:不要担心验证,它是在其他地方完成的。时间以24小时格式表示,不含秒。

    5 回复  |  直到 14 年前
        1
  •  73
  •   dtb    14 年前

    你可以用 TimeSpan.Parse 要分析时间,然后将结果添加到日期:

    DateTime newDateTime = oldDateTime.Add(TimeSpan.Parse(timeString));
    
        2
  •  10
  •   simendsjo    14 年前
    var dt = new DateTime(2010, 06, 26); // time is zero by default
    var tm = TimeSpan.Parse("01:16:50");
    var fullDt = dt + tm; // 2010-06-26 01:16:50
    
        3
  •  6
  •   Grayson Shelton    9 年前

    我用了一些类似于西门佐所说的东西,只是我继续用它作为约会时间

    DateTime date = Convert.ToDateTime(txtTrainDate.Text);
    DateTime time = Convert.ToDateTime(ddTrainTime.SelectedValue);
    DateTime dtCOMPLTDTTM = new DateTime(date.Year, date.Month, date.Day, time.Hour, time.Minute, time.Second);
    
        4
  •  0
  •   Brian Scott    14 年前

    我觉得你太担心字符串转换了。通过将这两个字符串元素组合在一起,您可以节省进一步的日期字符串解析,这很可能会更加昂贵。

    这是要重复很多次还是更大过程中的一个简单步骤?

        5
  •  -1
  •   the_machinist_    14 年前

    我很确定您可以使用SQL将这些值组合并转换为时间戳。