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

问题描述 投票:0回答:6

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

在 C# 中,我有一个具有

2010-06-25 12:00:00 AM
之类值的 DateTime 和一个具有
15:02
之类值的字符串。

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

我尝试过一些方法,包括:

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

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

我可以将时间字符串转换为日期,但随后我得到今天的日期并将其作为旧日期时间的刻度数添加是不正确的。

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

c# datetime
6个回答
82
投票

您可以使用TimeSpan.Parse来解析时间,然后将结果添加到日期中:

DateTime newDateTime = oldDateTime.Add(TimeSpan.Parse(timeString));

12
投票
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

6
投票

我使用了与 simendsjo 所说类似的东西,但我继续将其作为日期时间

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);

0
投票

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

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


0
投票

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


0
投票

如果您想忽略OldDateTime中的时间并将其替换为TimeString,您可以使用以下代码。

OldDateTime.Date.Add(TimeSpan.Parse(TimeString))

要将OldDateTime中的时间与TimeString合并,您可以使用

OldDateTime.Add(TimeSpan.Parse(TimeString))
© www.soinside.com 2019 - 2024. All rights reserved.