0

为什么无法分配 .Net DateTime 属性?能够执行以下操作会很有用:

DateTime saveNow = DateTime.Now;
saveNow.Second = 0; //Error, it does not compile
4

3 回答 3

1

因为它们是访问器属性,所以是只读的。

DateTime now = DateTime.Now;
DateTime saveNow 
   = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, 0);
于 2013-06-10T15:50:10.997 回答
1

尝试这个:

DateTime saveNow = DateTime.Now;

saveNow.AddSeconds(-savenow.Second); AddSeconds不会更改值,它会返回具有新值的新实例。此版本有效:

saveNow = saveNow.AddSeconds(-savenow.Second);
于 2013-06-10T15:50:47.013 回答
0

我总结了@SLaks 和@Gabe 所说的话:

DateTime 是一个结构(不是类),可变结构是不好的做法。在这里查看详细信息 为什么可变结构是邪恶的?

因此,DateTime 在设计上是不可变的。

要将 DateTime 'seconds' 字段设置为 0,您可以使用以下代码:

DateTime now = DateTime.Now;
DateTime saveNow 
 = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, 0);
于 2013-06-12T06:13:54.360 回答