Home > database >  Why do I need to create a DateTime service which returns DateTime.Now instead of using DateTime.Now
Why do I need to create a DateTime service which returns DateTime.Now instead of using DateTime.Now

Time:02-11

I have been watching Jason Taylor presentation about Clean Architecture with ASP.NET Core (timing 35:52)

https://www.youtube.com/watch?v=dK4Yb6-LxAk&t=2134s&ab_channel=GOTOConferences

And he created a DateTimeService which returns DateTime.Now and registered via AddTransient method, he suggests using it instead of using DateTime.Now directly because in this case he doesn't have a dependency on the machine clock.

It's not clear to me why he doesn't have a dependency in this case, could you please explain how it works?

CodePudding user response:

If you were ever going to implement a different way for getting the current time all you would need to do is create a new implementation for your IDateTimeService instead of changing every single instance of DateTime.Now in your project.

An example would be to create a service that obtains the time with an external request or to easily create a mock for unit tests so you can properly assert results that are dependent on the date and time.

  • Related