Определенно.Net использование Динамического Времени выполнения Языка. Ваши объекты будут применимы непосредственно C# и пользователями V.Net к тому времени, когда Вы закончены (Вы намерение поставить что-то?:-)
, В частности, цель, работающая под уменьшенным.Net в Silverlight, таким образом, Вы получаете последнее веб-богатое закрытие сделки UI.
У вас нет реального способа манипулировать системным временем.
На самом деле, вы довольно хорошо реорганизовали метод, чтобы сделать это проверяемо. Я бы остановился на этом.
Я вижу здесь два пути.
Либо создайте фабричный класс DateUtils
, который инкапсулирует конструкцию Календаря
и Дата
экземпляров. Затем вы можете поменять это на управляемую фабрику. То есть у вас есть вторая реализация DateUtils
, которая также предоставляет метод setCurrentTime
и затем явно возвращает экземпляры Calendar
, установленные на эту дату.
Или , вы можете использовать JMockit для фактического «переопределения» вашего вызова new GregorianCalendar
, чтобы вместо этого возвращался фиктивный экземпляр. Я сам этого не делал, но есть описание здесь .
Ваш вариант, разбив метод на два метода, также является вполне допустимым.
Похоже, вы пытаетесь воссоздать то, что делает JODA Время. Я процитирую это, если вы не в курсе. Вы можете пойти на компромисс между изобретением колеса и добавлением зависимости.