"2015/12/12 : 06:0-6ren">
gpt4 book ai didi

c# - 如何仅更改 DateTime 的日期部分,同时保留时间部分?

转载 作者:可可西里 更新时间:2023-11-01 08:01:53 49 4
gpt4 key购买 nike

我在我的代码中使用了很多 DateTime。我想将这些 DateTimes 更改为我的特定日期并保留时间。

1. "2012/02/02 06:00:00" => "2015/12/12 : 06:00:00"
2. "2013/02/02 12:00:00" => "2015/12/12 : 12:00:00"

我是用这种风格来改变的,但是好像不是什么好方法,想请问有什么办法可以实现这个任务。

DateTime newDateTime = new DateTime(2015,12,12,oldDateTime.Hour,oldDateTime.Minute,0);

最佳答案

保留秒、毫秒和时间的更小部分的更好方法是:

DateTime newDateTime = new DateTime(2015,12,12) + oldDateTime.TimeOfDay;

或者您可以创建一个扩展方法,将新日期应用于现有日期时间,同时,不要相信新日期没有 TimeOfDay:-

public static DateTime WithDate (this DateTime datetime, DateTime newDate)
{
return newDate.Date + datetime.TimeOfDay;
}

恕我直言 DateTime 是 .NET 最薄弱的部分之一。例如,TimeSpanTimeOfDay 不同,也不能表示“TimePeriod”(以月为单位)——这是三个独立的概念,将它们混合在一起是糟糕的选择。移动到 DateTimeOffset 通常是首选,或者移动到优秀的 Noda 时间库。

关于c# - 如何仅更改 DateTime 的日期部分,同时保留时间部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26707526/

49 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com