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
}

NodaTime:复制日期时间.今天

理想情况下,应该使用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还没有准备好发布,但我想给你一个即将发布的想法。