0

我需要结合日期和时间并插入一个日期时间行。

这是我的代码:

 DateTime Headlinedate;

 try
 {
     DateTime date = Convert.ToDateTime(txtHeadlinedate.Text.Trim(), Ci);
     string timestr = DateTime.Now.ToString("hh:mm:ss tt");
     DateTime combinedDate = date.Add(TimeSpan.Parse(timestr));
     Headlinedate = combinedDate;

 }
 catch {
     Headlinedate = DateTime.Now;
 }

我遇到了异常:

输入字符串的格式不正确

4

7 回答 7

4

如果您在第一行代码中遇到此异常,则必须确保 的内容txtHeadlinedate有效并相应地对其进行解析。

如果错误来自对 的调用TimeSpan.Parse,则以下版本应该可以解决问题:

DateTime date = Convert.ToDateTime(txtHeadlinedate.Text.Trim(), Ci);
Headlinedate = date.Add(DateTime.Now.TimeOfDay);
于 2013-02-20T07:54:36.137 回答
2

TimeSpan 无法解析“tt”。使用 DateTime 来解析它,或者使用 HH:mm 格式来获取 24 小时的小时值并从格式中删除 tt 部分。然后 TimeSpan 将能够解析它。例如:

DateTime date = Convert.ToDateTime(txtHeadlinedate.Text.Trim(), Ci);
string timestr = DateTime.Now.ToString("HH:mm:ss");
DateTime combinedDate = date.Add(TimeSpan.Parse(timestr));
Headlinedate = combinedDate;
于 2013-02-20T07:56:41.353 回答
0
date.Hour=DateTime.Now.Hour;
date.Minute=DateTime.Now.Minute;
date.Second=DateTime.Now.Second;
于 2013-02-20T07:57:43.010 回答
0

使用DateTime.TryParse并传递您的txtHeadlinedate.Text.Trim()价值

DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime)

对于添加时间跨度值,请使用

DateTime myDate = ExistingTime.Date.AddHours(hh).AddMinutes(min);

或 // 计算从这一刻起 36 天是一周中的哪一天。(如下所示)

System.DateTime today = System.DateTime.Now; System.TimeSpan duration = new System.TimeSpan(36, 0, 0, 0); System.DateTime answer = today.Add(duration);
于 2013-02-20T08:00:21.623 回答
0

我想这应该工作

DateTime Headlinedate;
try
         {
             DateTime date = Convert.ToDateTime(txtHeadlinedate.Text.Trim(), Ci);
             string timestr = DateTime.Now.ToString("MM/dd/yyyy HH:MM:ss");// here is the solution
             DateTime combinedDate = date.Add(TimeSpan.Parse(timestr));
             Headlinedate = combinedDate;

         }
         catch {
             Headlinedate = DateTime.Now;
         }
于 2013-02-20T08:01:11.030 回答
-1
DateTime date = Convert.ToDateTime(txtHeadlinedate.Text.Trim(), Ci);    
DateTime combinedDate = new DateTime(date.Year, date.Month, date.Day, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second);
于 2013-02-20T08:06:29.737 回答
-1

这行得通!

DateTime _dateOnly = DateTime.Now;
DateTime _timeOnly = DateTime.Now;

public DateTime Combined { get; set; }

      public DateTime DateOnly
        {
            get { return _dateOnly.Date; }
            set
            {
                _dateOnly = value.Date;
                Combined = DateOnly.Add(TimeOnly.TimeOfDay);
            }
        }

        public DateTime TimeOnly
        {
            get { return _timeOnly.ToLocalTime(); }
            set
            {
                _timeOnly = value.ToLocalTime();
                Combined = DateOnly.Add(TimeOnly.TimeOfDay);
            }
        }
于 2015-12-10T00:29:43.193 回答