如何将 DateTime 文字的时间部分附加到 DateTime 变量?

How to append time part of DateTime literal to a DateTime variable?

我的项目是.net 3.5。 我有一个仅包含日期部分的 DateTime 变量 dt1,现在我想将 DateTime 文字 # 13:45:39 # 的时间部分附加到 dt1 并分配给一个新的 DateTime 变量 dt2。有人知道怎么做吗?

DateTime dt1 = #2016/12/31# ;
DateTime dt2 = /*code to append # 13:45:39 # to dt1 */  ;

你可以这样做:

DateTime dt2 = new DateTime(dt1.Year, dt1.Month, dt1.Day, 13, 45, 39);

假设DateTime literal # 13:45:39 #意味着你有一个日期和时间的DatetIme,你可以使用DateTIme.AddDateTime.TimeOfDay来获取时间跨度:

DateTime dtDate = new DateTime(2016, 12, 31);
DateTime dtTime = new DateTime(1, 1, 1, 13, 45, 39);
DateTime result = dtDate.Date.Add(dtTime.TimeOfDay);

如果提到的时间文字实际上是一个字符串使用TimeSpan.Parse/TryParse:

string timeString = "# 13:45:39 #";
TimeSpan time = TimeSpan.Parse(timeString.Trim(' ', '#'));
result = dtDate.Date.Add(time);

My project is of .net 3.5. I have a DateTime variable dt1 containing only Date part

DateTime 是 .NET Framework 中的 struct。它总是 有日期和时间部分。通过这句话,我假设你的时间部分是00:00:00喜欢;

DateTime dt1 = new DateTime(2016, 12, 31);

I want to append time part of DateTime literal # 13:45:39 # to dt1 and assign to a new DateTime variable dt2

不清楚这个 literal 在那个句子中的意思,但是如果你有一个 TimeSpan as 13:45:39, you can clearly add this value to your dt1 with DateTime.Add(TimeSpan) 方法,比如;

TimeSpan ts = new TimeSpan(13, 45, 39);
dt1 = dt1.Add(ts);

如果这个 # 13:45:39 # 是一个字符串,你可以先用 ParseExact 方法将它解析为 TimeSpan 然后再使用这个 Add 方法像;

TimeSpan ts = TimeSpan.ParseExact("# 13:45:39 #", "'# 'hh\:mm\:ss' #'", 
                                  CultureInfo.InvariantCulture);
dt1 = dt1.Add(ts);