gpt4 book ai didi

c# - 删除 DateTime.UctNow.TimeOfDay 的毫秒部分的最简单方法是什么?

转载 作者:太空狗 更新时间:2023-10-29 18:06:53 38 4
gpt4 key购买 nike

我有一个理论,为什么下面的代码没有产生我需要的结果:

 endDate = DateTime.UtcNow.AddDays(1).ToShortDateString() + " " +    
DateTime.UtcNow.TimeOfDay.Subtract(
new TimeSpan(0, 0, 0, 0, DateTime.UtcNow.TimeOfDay.Milliseconds));

处理器必须计算 DateTime.UtcNow.TimeOfDay.Milliseconds,并且由于 CPU 单个滴答的时间长度(以及处理此属性和返回结果的时间),它并不表示 DateTime.UtcNow.TimeOfDay.Milliseconds 将减去 DateTime.UtcNow.TimeOfDay

指定的确切毫秒数

我需要知道,从 DateTime.UtcNow.TimeOfDay 中删除毫秒数的最简单和最有效的方法是什么,而无需使用大量处理器时间? 我的这个应用比较大,这个问题比较简单。但是当这个应用程序被部署时,它就没有不稳定的余地了。这个毫秒数必须被修剪,因为它被发送到 SQL Server 中的存储过程,而这个特定的存储过程不支持 DateTimes 上的毫秒数。我也经常遇到这个问题,但我通常将日期转换为字符串(这是一个单独的转换),以毫秒为单位拆分字符串,并使用索引位置 0 来获取我需要的时间。有没有更短、更有效的方法?

稳定性和速度对我来说最重要。

提前致谢

最佳答案

不要在同一表达式中重复使用 Now/UtcNow 属性。一次获取值,在不同的地方使用相同的值:

DateTime now = DateTime.Now;
endDate = now.AddDays(1).ToShortDateString() + " " +
now.TimeOfDay.Subtract(
new TimeSpan(0, 0, 0, 0, now.TimeOfDay.Milliseconds));

如果您只想以特殊方式格式化日期,而不需要实际的 DateTime 值,则可以跳过格式中的毫秒,例如:

endDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

当您将值发送到数据库时,您不应将其作为字符串发送,而应作为 DateTime 值发送:

DateTime now = DateTime.Now;
DateTime endDate = now - new TimeSpan(0, 0, 0, 0, now.TimeOfDay.Milliseconds);

关于c# - 删除 DateTime.UctNow.TimeOfDay 的毫秒部分的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9768208/

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