【问题标题】:Property or indexer 'System.DateTime.TimeOfDay' cannot be assigned to — it is read only无法将属性或索引器“System.DateTime.TimeOfDay”分配给 - 它是只读的
【发布时间】:2013-08-22 01:05:46
【问题描述】:

我看到了很多重复的帖子,但对我来说这是不同的。

我有一个 Datetime 对象并获取时间部分并为其分配另一个时间。当我要分配它时,它会引发这些错误。

这里 newStartDateGroup 是一个 DateTime 对象 这里的 OpenTime 是一个 TimeSpan

无法分配属性或索引器——它是只读的

else if(newStartDateGroup.TimeOfDay < i.OpenTime && newEndDateGroup.TimeOfDay > i.CloseTime) // < >
 {
        newStartDateGroup.TimeOfDay = i.OpenTime;

【问题讨论】:

    标签: c# asp.net datetime datetimepicker


    【解决方案1】:

    .NET 中的DateTime structimmutable,因此您不必更改它的值,而是必须创建一个新值:

    newStartDateGroup = newStartDateGroup.Date.Add(i.OpenTime);
    

    【讨论】:

    • 我更喜欢它的另一种语法,即newStartDateGroup = newStartDateGroup.Date + i.OpenTime;,但这只是品味/风格的问题。
    【解决方案2】:

    您只能创建新的DateTime 实例。

    根据您显示的代码,您只想设置白天时间。
    应该这样做:

    newStartDateGroup = DateTime.Today.Add(i.OpenTime);
    

    DateTime.Today 今天是 00:00。

    【讨论】:

    • .Today. 部分没有意义(您不能通过具体实例访问静态成员),并且当您有 .Date 时不需要。
    【解决方案3】:

    只需手动分配小时、分钟和秒。

    DateTime temp = DateTime(newStartDateGroup.Year, newStartDateGroup.Month, newStartDateGroup.Day, i.OpenTime.Hours, i.OpenTime.Minutes, i.OpenTime.Seconds);
    
    newStartDateGroup = temp;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多