NodaTime:复制日期时间.今天
本文关键字:时间 今天 日期 复制 NodaTime | 更新日期: 2023-09-27 18:27:47
我的服务从外部服务请求数据,该服务需要特定日期的参数(不需要时间信息)。
到目前为止,我一直在使用DateTime.Today(例如,2014年10月24日12:00:00)。
我已经开始使用NodaTime来提高可测试性,但不确定复制此功能的最佳方式:
public class SomeClass(IClock clock)
{
_clock = clock; //Injected at runtime, provides mockable interface
var localNow = _clock.Now.InZone(_serverTimeZone);
var today = localNow.ToDateTimeUnspecified().Date; //This close enough? Seems kinda long
}
理想情况下,应该使用LocalDate
而不是DateTime
来表示日期。所以你想要:
var localNow = clock.Now.InZone(serverZone);
var today = localNow.Date;
如果必须使用DateTime
,则当前代码可以。
在Noda Time 2.0中,这将更简单,因为ZonedClock
基本上是时钟和时区的组合,允许您写入:
// Or whatever...
private readonly ZonedClock zonedClock = clock.InZone(zone);
// Then later
LocalDate date = zonedClock.GetCurrentDate();
Noda Time 2.0还没有准备好发布,但我想给你一个即将发布的想法。