Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Даты: как изменить в меньшую сторону?  (Прочитано 11021 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Daniloff
Помогающий

ru
Offline Offline

« : 09-02-2008 12:56 » 

Вот такой ерундовый вопрос, но я в тупике.
Есть дата, текущая. Надо получить 1-е число текущего месяца. Как?!  А черт его знает...
Свойство Day менять нельзя...  Здесь была моя ладья...
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 09-02-2008 13:36 » 

Не знаю как в .NET, а в других средах есть ф-ии получения даты на первый день месяца для исходной даты. Поищи в справочнике - наверно также сделано.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Daniloff
Помогающий

ru
Offline Offline

« Ответ #2 : 09-02-2008 13:37 » 

Сам извращнулся:
Код:
this.date1.Value = System.DateTime.Today.AddDays(-(System.DateTime.Today.Day) + 1);

Вот, блин... А думал, что в нэте есть поизящнее конструкция!  Ага
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 09-02-2008 17:08 » 

почему извращение? нормальная конструкция(решение)

а теперь попробуй найти последний день месяца
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 10-02-2008 10:04 » 

Можно так:

Код: (Text)
DateTime firstDayOfCurrentMonth = DateTime.Today - TimeSpan.FromDays(DateTime.Today.Day - 1)

Для последнего дня можно так:
Код: (Text)
DateTime firstDayOfNextMonth = DateTime.Today.AddMonths(1) - TimeSpan.FromDays(DateTime.Today.Day - 1)

Но тут есть тонкий момент, связанный с двойным взятием DateTime.Today - это потенциальный, хотя и маловероятный баг, когда результаты обоих функций придутся на разные месяцы. Правильнее написать функцию.

Код: (Text)
DateTime FirstDayOfMonth(DateTime date)
{
    return date.Date - TimeSpan.FromDays(date.Day - 1);
}

...

DateTime firstDayOfCurrentMonth = FirstDayOfMonth(DateTime.Now);

P.S. Баг форума, упорно автоматический вставляется тэг code в начало поста.
« Последнее редактирование: 10-02-2008 13:30 от Finch » Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #5 : 10-02-2008 13:27 » 

Offtopic:

dimka, Это не баг, а фича. Ты скорее всего сделал закрываюших тегов больше, чем открываюших. Вот он и дополняет. Сейчас подправлю твое сообшение.
Поставлю в угол.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #6 : 10-02-2008 23:59 » new

DateTime firstDayOfCurrentMonth = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1,0,0,0,0);
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines