Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.96/73: Рейтинг темы: голосов - 73, средняя оценка - 4.96
chaosfall
4 / 1 / 2
Регистрация: 04.12.2010
Сообщений: 65
1

Дата в формате <день>.<месяц>.<год>

20.02.2011, 14:40. Просмотров 13884. Ответов 17
Метки нет (Все метки)

Задана дата в формате <день>.<месяц>.<год>...
а дальше нужно будет определить, например, сколько дней прошло с начала года и т.п.

Подскажите, пожалуйста, как правильно получить дату, чтобы потом можно было манипулировать с каждой ее составляющей: день, месяц, год.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2011, 14:40
Ответы с готовыми решениями:

Задана дата в формате <день>.<месяц>.<год>
Задана дата в формате &lt;день&gt;.&lt;месяц&gt;.&lt;год&gt;. Определить: 1) сколько дней прошло...

Задана дата в формате <день>.<месяц>.<год>. Определить
Задана дата в формате &lt;день&gt;.&lt;месяц&gt;.&lt;год&gt;. Определить 1. сколько дней прошло...

Описать класс Дата, представленный целыми переменными: год, месяц и день
Описать класс (в зависимости от варианта) с необходимым набором полей и...

Вводится дата(день месяц и год).Определить сколько дней осталось до конца месяца.
Вводится дата(день месяц и год).Определить сколько дней осталось до конца...

Создать класс Date для работы с датами в формате "год.месяц.день"
надо написать класс 1 контрольная 8 задание. только срочно в понедельник уже...

17
nfsk_hedgehog
32 / 32 / 9
Регистрация: 02.09.2009
Сообщений: 64
20.02.2011, 15:33 2
ну вот есть структура http://msdn.microsoft.com/ru-ru/library/system.datetime(VS.90).aspx
1
chaosfall
4 / 1 / 2
Регистрация: 04.12.2010
Сообщений: 65
20.02.2011, 16:21  [ТС] 3
спасибо! полезная вещь, так и сделаю.

но если рассматривать альтернативные варианты (просто ради интереса, чтоб разобраться):
может есть в C# что-нибудь наподобие:

C++
1
scanf("%d.%d.%d", &day,&month,&year)
0
m0nax
1203 / 908 / 109
Регистрация: 12.01.2010
Сообщений: 1,891
Завершенные тесты: 3
20.02.2011, 17:20 4
Нет, такой ерунды нету

есть
C#
1
2
string strDate = Console.ReadLine();
DateTime dt = DateTime.Parse(strDate);
и пользуйся всеми составляющими даты от процессорных тиков до годов
2
chaosfall
4 / 1 / 2
Регистрация: 04.12.2010
Сообщений: 65
20.02.2011, 18:23  [ТС] 5
а как изменять значения составляющих этой структуры?

например, у меня есть введенная произвольная дата date, мне нужно вывести дату предыдущего дня prevDay, я это пытаюсь сделать так:
C#
1
2
3
4
5
6
7
 prevDay = date;
              if (date.Day == 1) 
{ 
  prevDay.Day = months[date.Month - 1];  // months -- массив с кол-вом дней в каждом месяце -- int [] months ={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  prevDay.Month--; 
}
//...
пишет:
Ошибка 1 Невозможно присвоить значение свойству или индексатору "System.DateTime.Day" -- доступ только для чтения
Ошибка 2 Невозможно присвоить значение свойству или индексатору "System.DateTime.Month" -- доступ только для чтения
0
Crudelis
Шаровик затейник
683 / 432 / 78
Регистрация: 06.05.2010
Сообщений: 1,109
20.02.2011, 18:42 6
chaosfall, зачем так мучатся, у DataTime есть хороший метод добавить день, с помощью его можно спокойно сделать подсчет, вот пример:
C#
1
2
3
4
            DateTime daytoday = DateTime.Today;
            Console.WriteLine(daytoday);
            DateTime daytommorow = daytoday.AddDays(-1); //вчерашний день
            Console.WriteLine(daytommorow);
Добавлено через 3 минуты
так же есть метод для работы с месяцами AddMonths(), часами, минутами, годами и так далее
При работе с датой если день перепрыгнет на другой месяц, т.е. перейдет за 31 то месяц смениться автоматически. Вот пример:
C#
1
2
3
4
            DateTime daytoday = DateTime.Today;
            Console.WriteLine(daytoday);
            DateTime daytommorow = daytoday.AddDays(-22); 
            Console.WriteLine(daytommorow);
1
chaosfall
4 / 1 / 2
Регистрация: 04.12.2010
Сообщений: 65
20.02.2011, 19:02  [ТС] 7
Crudelis, да, спасибо только вот тематика моих заданий - "Изучение операторов C#", так что подозреваю, что такой вариант с 1м методом не прокатит и надо помучиться

и еще вопрос: используя метод AddDays, как сделать, чтобы время не выводилось? а только дата?
Сейчас выводит так: "29.02.2012 0:00:00"

Добавлено через 11 минут
Цитата Сообщение от chaosfall Посмотреть сообщение
и еще вопрос: используя метод AddDays, как сделать, чтобы время не выводилось? а только дата?
Сейчас выводит так: "29.02.2012 0:00:00"
с этим разобралась.
0
Crudelis
Шаровик затейник
683 / 432 / 78
Регистрация: 06.05.2010
Сообщений: 1,109
21.02.2011, 00:00 8
разницу между 2х дат можно подсчитать так:
C#
1
2
3
4
5
            DateTime d1 = new DateTime(1984, 10, 27);
            DateTime d2 = new DateTime(1984, 10, 3);
 
            int days = (d2 - d1).Days;
            Console.WriteLine(days);
1
servitola
60 / 60 / 6
Регистрация: 07.09.2010
Сообщений: 259
21.02.2011, 13:44 9
http://msdn.microsoft.com/ru-ru/library/xhz1w05e.aspx
для того, чтоб можно было вводить дату из стороки, говоря конвертеру как где что расположено

выводить то, что нужно можно с датой так:
http://www.csharp-examples.net/string-format-datetime/

для работы с разницами в датах используется такой тип как TimeSpan:
http://msdn.microsoft.com/ru-ru/library/system.timespan.aspx
в ней уже количество дней может быть и отрицательным. и как хочешь ))

Добавлено через 47 секунд
к примеру я парсил дату из своей xml так:
C#
1
XmlConvert.ToDateTime(node.SelectSingleNode("DayStart").InnerText, "HHmmss"),
2
dmur_07
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 8
09.07.2013, 12:31 10
Нужна помощь, не могу преобразовать дату в c# для добавления в таблицу БД Access. Знаю что требуется привести к виду #mm/dd/yyyy#, но как это согласовать с параметрами и типом String не пойму...

Помогите записать ее в БД, пожалуйста...

C#
1
2
3
4
5
6
7
8
9
10
11
12
            //Добавление в БД
            OleDbConnection Connection1 = new OleDbConnection(fData.ConnDBString);
            Connection1.Open();
            OleDbCommand Command1 = new OleDbCommand(
                "INSERT INTO F_Clients (pFIO, DateOfBirth) VALUES(?,?)", Connection1);
 
            Command1.Parameters.AddWithValue("pFIO", textBoxEditpFIO.Text);
            Command1.Parameters.AddWithValue("DateOfBirth", textBoxEditDateOfBirth.Text);
 
            Command1.ExecuteNonQuery();
            Connection1.Close();
            //Конец добавления
Выдает ошибку "Несоответствие типов",
0
mrReptiloid
311 / 174 / 25
Регистрация: 30.04.2011
Сообщений: 1,469
09.07.2013, 13:17 11
dmur_07, для ввода даты рождения можно использовать DateTimePicker
тогда как-то так
C#
1
dateTimePicker1.Value.Date.ToString("MM/dd/yyyy");
1
dmur_07
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 8
09.07.2013, 18:00 12
спасибо,
следующий вопрос.
как правильно составить запрос выборки по интервалу даты?

делаю так,
"SELECT * FROM F_clients WHERE pDate BETWEEN " + period + " ORDER BY id DESC"

где string period = "#12/31/12# and #12/31/13#";
0
mrReptiloid
311 / 174 / 25
Регистрация: 30.04.2011
Сообщений: 1,469
09.07.2013, 18:53 13
dmur_07, вроде правильно,только зачем решетки?даты можно тоже выбирать из datetime picker
C#
1
string selectCommand = String.Format("select * from F_clients where pDate between {0} and {1} order by id desc",startDateTimePicker.Value.Date.Tostring("MM/dd/yyyy"),endDateTimePicker.Value.Date.Tostring("MM/dd/yyyy"));
1
dmur_07
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 8
16.07.2013, 13:07 14
Пишу так

C#
1
string SelectCommandFL = String.Format("SELECT * FROM FL_clients WHERE pFIO LIKE '%{0}%' AND INN LIKE '%{1}%' AND Enabled=True AND (pDate BETWEEN {2} and {3}) ORDER BY id DESC", fData.ClientName,fData.INN ,fData.startDateTimePicker.Value.Date.ToString("MM/dd/yyyy"), fData.endDateTimePicker.Value.Date.ToString("MM/dd/yyyy"));
выдает ошибку {"Object reference not set to an instance of an object."}

что не так?
0
mrReptiloid
311 / 174 / 25
Регистрация: 30.04.2011
Сообщений: 1,469
16.07.2013, 13:14 15
dmur_07, там вроде написано.Ссылка на объект не указывает на его экземпляр.Возможно,не выбрана дата где-то.Что такое fdata?

И вообще,врубай отладчик и ищи,где там null_ы.тут экстрасенсов нету...наверное...
1
dmur_07
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 8
16.07.2013, 14:44 16
sniper_lunev
там разобрался,

но теперь что то другое пишет:

Число содержит синтаксическую ошибку в выражении запроса 'pFIO LIKE '%%' AND INN LIKE '%%' AND Enabled=True AND (pDate BETWEEN 07.16.2013 and 07.16.2013'.

запрос такой

C#
1
fData.SelectCommand = String.Format("SELECT * FROM FL_clients WHERE pFIO LIKE '%{0}%' AND INN LIKE '%{1}%' AND Enabled=True AND (pDate BETWEEN {2} and {3}) ORDER BY id DESC", fData.ClientName, fData.INN, fData.pDateStart.Date.ToString("MM/dd/yyyy"), fData.pDateEnd.Date.ToString("MM/dd/yyyy"));
0
kontuPauk
302 / 300 / 125
Регистрация: 29.01.2013
Сообщений: 638
Записей в блоге: 1
Завершенные тесты: 1
16.07.2013, 15:05 17
Ну дату-то тоже надо в одинарные кавычки прятать.
C#
1
fData.SelectCommand = String.Format("SELECT * FROM FL_clients WHERE pFIO LIKE '%{0}%' AND INN LIKE '%{1}%' AND Enabled=True AND (pDate BETWEEN '{2}' and '{3}') ORDER BY id DESC", fData.ClientName, fData.INN, fData.pDateStart.Date.ToString("MM/dd/yyyy"), fData.pDateEnd.Date.ToString("MM/dd/yyyy"));
0
dmur_07
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 8
16.07.2013, 15:11 18
разобрался

работает так,
C#
1
fData.SelectCommand = String.Format("SELECT * FROM FL_clients WHERE pFIO LIKE '%{0}%' AND INN LIKE '%{1}%' AND Enabled=True AND (pDate BETWEEN #{2}# and #{3}#) ORDER BY id DESC", fData.ClientName, fData.INN, fData.pDateStart.Date.ToString(@"MM\/dd\/yyyy"), fData.pDateEnd.Date.ToString(@"MM\/dd\/yyyy"));
у меня БД Access, без решеток не работает...
0
16.07.2013, 15:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2013, 15:11

Программа День месяц год
ПОМОгите пожалуйста изменить эту программу.Мне нужно,чтобы в ней использовался...

Описать класс ДАТА (поля: ЧИСЛО, МЕСЯЦ, ГОД)
Описать класс ДАТА (поля: ЧИСЛО, МЕСЯЦ, ГОД). 1)Операция класса: увеличение...

Day (день), Month (месяц) и Year (год)
Подскажите пожалуйста,как задать в задаче операции,чтобы при выводе было видно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru