如何在C#中克隆DateTime对象?

Iai*_*ain 81 c# datetime clone

如何在C#中克隆DateTime对象?

Pie*_*kel 186

DateTime是一个值类型(struct)

这意味着以下内容创建了一个副本:

DateTime toBeClonedDateTime = DateTime.Now;
DateTime cloned = toBeClonedDateTime;
Run Code Online (Sandbox Code Playgroud)

您还可以安全地执行以下操作:

var dateReference = new DateTime(2018, 7, 29);
for (var h = 0; h < 24; h++) {
  for (var m = 0; m < 60; m++) {
    var myDateTime = dateReference.AddHours(h).AddMinutes(m);
    Console.WriteLine("Now at " + myDateTime.ToShortDateString() + " " + myDateTime.ToShortTimeString());
  }
}
Run Code Online (Sandbox Code Playgroud)

注意在最后一个例子中如何在myDateTime每个循环中重新声明; 如果dateReference已感染AddHours()AddMinutes(),myDateTime会一直徘徊过的真快-但事实并非如此,因为dateReference原地踏步:

Now at 2018-07-29 0:00
Now at 2018-07-29 0:01
Now at 2018-07-29 0:02
Now at 2018-07-29 0:03
Now at 2018-07-29 0:04
Now at 2018-07-29 0:05
Now at 2018-07-29 0:06
Now at 2018-07-29 0:07
Now at 2018-07-29 0:08
Now at 2018-07-29 0:09
...
Now at 2018-07-29 23:55
Now at 2018-07-29 23:56
Now at 2018-07-29 23:57
Now at 2018-07-29 23:58
Now at 2018-07-29 23:59
Run Code Online (Sandbox Code Playgroud)


Gre*_*ech 22

var original = new DateTime(2010, 11, 24);
var clone = original;
Run Code Online (Sandbox Code Playgroud)

DateTime是一个值类型,所以当你指定它时,你也克隆它.也就是说,克隆它是没有意义的,因为它是不可改变的; 通常,如果您打算更改其中一个副本,则只能克隆一些内容.

  • +1 同意。我解决这个问题的方法是创建一个新的 DateTime 对象,然后从原始日期时间对象复制我想要克隆的所需部分,例如(日、月、年),然后手动为新对象设置时间。 .. 举个例子。 (2认同)

Dar*_*rov 10

DateTime是一个值类型,因此每次将它分配给您正在克隆的新变量时.

DateTime foo = DateTime.Now;
DateTime clone = foo;
Run Code Online (Sandbox Code Playgroud)