2011-01-24 3 views
6

Есть ли способ установить отрицательные значения при вызове конструктора DateTime.Отрицательные значения в C# DateTime

так:

DateTime date = new DateTime(2011, 2, -1); 

будет такой же, как:

DateTime date = new DateTime(2011, 1, 31); 

Я знаю, что это работает и на других языках, но проблема в том, что C# .net бросает исключение, когда я делая это. Любые идеи о том, как это сделать в C# .net?

+0

это не может работать по-разному в разных языках .net, потому что 'DateTime' является частью общей библиотеки. – Andrey

+0

почему вы хотите отрицательное время нации? если вы хотите вычесть время, то либо используйте .AddDays (-x), либо .AddMonths (-x) и т. д., либо существует еще один класс под названием TimeSpan, который вы можете использовать для времен, которые не являются целым днем ​​или целым месяцем и т. д. – WraithNath

+0

@ WraithNath: Как я должен написать приложение в .net, чтобы напомнить о дне рождения моих динозавров с этим ограничением!?!?! – Mystra007

ответ

8

Вы не можете. Если вы хотите получить последний день месяца, вы должны начать с начала следующего месяца, а затем снять один день или использовать DateTime.DaysInMonth(year, month).

Лично я бы использовал второй подход, так как в противном случае вам нужно убедиться, что вы правильно справляетесь с поиском последнего дня в декабре, например, начиная с 1 января следующего года. Вот код, который я хотел бы использовать:

DateTime date = new DateTime(year, month, DateTime.DaysInMonth(year, month)); 
10

Использование

DateTime date = new DateTime(2011, 2,1).AddDays(-1); 
+0

Я помню, как я смущен тем, как вы можете добавить минус-день, когда я впервые начал .net: P – nik0lias

+2

@ nik0lias: Hehe =) У меня есть опыт работы в математике, и я буду смущен, если вы не сможете добавить отрицательные значения! – Jens

1

DateTime всегда абсолютное положение во времени. Я думаю, что вы ищете TimeSpan, что также может быть отрицательным.

Смежные вопросы