Модераторы: gambit, Partizan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C#] Datetime, Нахождение времени 
V
    Опции темы
Integra
  Дата 27.5.2007, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 23.4.2007
Где: Омск

Репутация: нет
Всего: нет



У меня созданы combobox  отдельно для месяцев и чисел, и 2 textboxа для годов. И + для часов и минут текстбоксы.  И так для двух дат. Как их считывать, чтоб потом найти разницу между этими датами, и вывести потом в текстбокс общее время пути. (Т.е. как бы заданны время и дата отправления и прибытия.)  smile 
PM MAIL ICQ   Вверх
Naum
Дата 27.5.2007, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 1
Всего: 15



Код

DateTime departureDate = new DateTime(depYearTextBox.Text, depMonthTextBox.Text, depDayTextBox.Text, depHourTextBox.Text, depMinuteTextBox.Text, 0, 0);
DateTime arrivalDate = new DateTime(arrivYearTextBox.Text, arrivMonthTextBox.Text, arrivDayTextBox.Text, arrivHourTextBox.Text, arrivMinuteTextBox.Text, 0, 0);
TimeSpan travelTiem = arrivalDate.Subtract(departureDate);

Если есть еще вопросы спрашивай. ;)


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
Integra
Дата 27.5.2007, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 23.4.2007
Где: Омск

Репутация: нет
Всего: нет



Да есть вопрос, почему он не высчитывает...? все вроде правильно написала, и ошибок нет , но в ходе запуска, он пишет , что правильно ли я написала этот метод.. smile 
что сделать? чтоб все норм выполнял??  smile 
PM MAIL ICQ   Вверх
Naum
Дата 28.5.2007, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 1
Всего: 15



А можно посмотреть твой код? И на сообщение об ошибке тоже хотелось бы взглянуть. ;)


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
Integra
Дата 28.5.2007, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 23.4.2007
Где: Омск

Репутация: нет
Всего: нет



Да, конечно, вот: 
Код

private void button1_Click(object sender, EventArgs e)
        {
            long c, d, day2 = 0, day3 = 0, year2 = 0, b1 = 0, b = 0, n, grig, m = 0, day1 = 0, year1 = 0, days = 0;
            string month1, month2 = "";
            bool v = true;
            month1 = Convert.ToString(comboBox1.Text);
            try
            {
                day1 = Convert.ToInt32(comboBox2.Text);
            }
            catch
            {
                MessageBox.Show("Ведите правильно число!");
            }
            try
            {
                year1 = Convert.ToInt32(textBox6.Text);
            }
            catch
            {
                MessageBox.Show("Ведите правильно год!");
            }
            try
            {
                year2 = Convert.ToInt32(textBox7.Text);
            }
            catch
            {
                MessageBox.Show("Ведите правильно год!");
            }
            month2 = Convert.ToString(comboBox4.Text);
            try
            {
                day3 = Convert.ToInt32(comboBox3.Text);
            }
            catch
            {
                MessageBox.Show("Ведите правильно число!");
            }
            if ((day1 > 0) && (day1 < 32))
            {
                if ((year1 > 0) && (year1 <= int.MaxValue))
                {
                    switch (month1)
                    {
                        case "Январь": m = 1; break;
                        case "Февраль": m = 2; break;
                        case "Март": m = 3; break;
                        case "Апрель": m = 4; break;
                        case "Май": m = 5; break;
                        case "Июнь": m = 6; break;
                        case "Июль": m = 7; break;
                        case "Август": m = 8; break;
                        case "Сентябрь": m = 9; break;
                        case "Октябрь": m = 10; break;
                        case "Ноябрь": m = 11; break;
                        case "Декабрь": m = 12; break;

                        default: MessageBox.Show("Выберете правильно месяц."); comboBox1.Text = ""; v = false; break;
                    }
                }
                if ((day3 > 0) && (day3 < 32))
                {
                    if ((year2 > 0) && (year2 <= int.MaxValue))
                    {
                        switch (month2)
                        {
                            case "Январь": m = 1; break;
                            case "Февраль": m = 2; break;
                            case "Март": m = 3; break;
                            case "Апрель": m = 4; break;
                            case "Май": m = 5; break;
                            case "Июнь": m = 6; break;
                            case "Июль": m = 7; break;
                            case "Август": m = 8; break;
                            case "Сентябрь": m = 9; break;
                            case "Октябрь": m = 10; break;
                            case "Ноябрь": m = 11; break;
                            case "Декабрь": m = 12; break;

                            default: MessageBox.Show("Выберете правильно месяц."); comboBox4.Text = ""; v = false; break;
                        }
                    }
                    
                }
                //Перевод даты в юлианский календарь.  Не знаю надо или нет вот это: 
                c = Math.DivRem(year1, 4, out n);
                c = Math.DivRem(year1, 400, out d);
                c = Math.DivRem(year1, 100, out b);
                if ((month1 == "Февраль") && (day1 > 28))
                {
                    if (d == 0)
                    {
                        day1 = 29;
                        comboBox2.Text = "29";
                    }
                    else if (b == 0)
                    {
                        day1 = 28; comboBox2.Text = "28";
                    }
                    else if (n == 0)
                    {
                        day1 = 29; comboBox2.Text = "29";
                    }
                    else
                    {
                        day1 = 28; comboBox2.Text = "28";
                    }
                }
                if ((month2 == "Февраль") && (day2 > 28))
                {
                    if (d == 0)
                    {
                        day1 = 29;
                        comboBox2.Text = "29";
                    }
                    else if (b == 0)
                    {
                        day1 = 28; comboBox2.Text = "28";
                    }
                    else if (n == 0)
                    {
                        day1 = 29; comboBox2.Text = "29";
                    }
                    else
                    {
                        day1 = 28; comboBox2.Text = "28";
                    }
                }
                if (year1 > 1528) grig = 0;
                else
                    if (year1 < 1528) grig = 1;
                    else
                        if (m > 10) grig = 0;
                        else if (m < 10) grig = 1;
                        else if (day1 >= 15) grig = 0;
                        else grig = 1;
                if (m <= 2)
                {
                    m += 12;
                    year1--;
                }
                if (year2 > 1528) grig = 0;
                else
                    if (year2 < 1528) grig = 1;
                    else
                        if (m > 10) grig = 0;
                        else if (m < 10) grig = 1;
                        else if (day3 >= 15) grig = 0;
                        else grig = 1;
                if (m <= 2)
                {
                    m += 12;
                    year2--;
                }
...
DateTime departureDate = new DateTime(Convert.ToInt32(textBox6.Text), Convert.ToInt32(comboBox1.Text), Convert.ToInt32(comboBox2.Text), Convert.ToInt32(textBox1.Text), Convert.ToInt32(textBox2.Text), 0, 0);
                DateTime arrivalDate = new DateTime(Convert.ToInt32(textBox7.Text), Convert.ToInt32(comboBox4.Text), Convert.ToInt32(comboBox3.Text), Convert.ToInt32(textBox3.Text), Convert.ToInt32(textBox4.Text), 0, 0);
                TimeSpan travelTiem = arrivalDate.Subtract(departureDate);
                textBox5.Text = Convert.ToString(travelTiem);
...


И нужен ли год вообще в моем случае... Как проще это можно сделать? Может не через comboboxы??
PM MAIL ICQ   Вверх
Naum
Дата 28.5.2007, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 1
Всего: 15



А что за ошибка? По идее все должно работать. 


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
Integra
Дата 29.5.2007, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 23.4.2007
Где: Омск

Репутация: нет
Всего: нет



указал на строку в коде:
Код

DateTime departureDate = new DateTime(Convert.ToInt32(textBox6.Text), Convert.ToInt32(comboBox1.Text), Convert.ToInt32(comboBox2.Text), Convert.ToInt32(textBox1.Text), Convert.ToInt32(textBox2.Text), 0, 0);


и ошибка --- Input string was not in a correct format.
Как исправить это??
PM MAIL ICQ   Вверх
stab
Дата 29.5.2007, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 1
Всего: 48



один из параметров не может быть переведён в int из string, т.к. видима это не число, видима это месяц. ты не думал об использлвании DateTimePicker? задача по получению даты и времени резко упростилась бы.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Naum
Дата 29.5.2007, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 1
Всего: 15



Цитата(cully @  29.5.2007,  17:44 Найти цитируемый пост)
ты не думал об использлвании DateTimePicker?

Цитата(Integra @  28.5.2007,  15:24 Найти цитируемый пост)
Может не через comboboxы??

It's my fault. Забыл совсем про DateTimePicker.


Это сообщение отредактировал(а) Naum - 29.5.2007, 17:30


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
Integra
Дата 1.6.2007, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 23.4.2007
Где: Омск

Репутация: нет
Всего: нет



Программа написана у меня. Только есть ошибка - если вводить например 31 января- дата отправления- и 1 февраля - прибытия, то он выдает ошибку, что datetime  не может такое посчитать. Я не могу почему -то найти эту ошибку в коде. МОжет опытный глаз программиста сможет увидеть ее?! 
Код  части программы представлен ниже: 
Код


        private void button3_Click(object sender, EventArgs e)
        {
            int d1, d2, m1 = 0, m2 = 0, y1, y2, c, b, n, d; //i, r1 = 0, r2 = 0;
            string mo1, mo2;
            try
            {
                d1 = Convert.ToInt16(comboBox3.Text);
            }
            catch (FormatException)
            {
                MessageBox.Show("Введите дату правильно!", "Ошибка!");
                return;
            }
            try
            {
                d2 = Convert.ToInt16(comboBox4.Text);
            }
            catch (FormatException)
            {
                MessageBox.Show("Введите дату правильно!", "Ошибка!");
                return;
            }
            try
            {
                mo1 = Convert.ToString(comboBox1.Text);
            }
            catch (FormatException)
            {
                MessageBox.Show("Введите дату правильно!", "Ошибка!");
                return;
            }
            try
            {
                mo2 = Convert.ToString(comboBox2.Text);
            }
            catch (FormatException)
            {
                MessageBox.Show("Введите дату правильно!", "Ошибка!");
                return;
            }
            try
            {
                y1 = Convert.ToInt16(numericUpDown1.Value);
            }
            catch (FormatException)
            {
                MessageBox.Show("Введите дату правильно!", "Ошибка!");
                return;
            }
            try
            {
                y2 = Convert.ToInt16(numericUpDown2.Value);
            }
            catch (FormatException)
            {
                MessageBox.Show("Введите дату правильно!", "Ошибка!");
                return;
            }
            try
            {
                ho = Convert.ToInt16(numericUpDown3.Value);
            }
            catch (FormatException)
            {
                MessageBox.Show("Введите правильно часы!", "Ошибка!");
                return;
            }
            try
            {
                Hp = Convert.ToInt16(numericUpDown5.Value);
            }
            catch (FormatException)
            {
                MessageBox.Show("Введите правильно часы!", "Ошибка!");
                return;
            }
            try
            {
                mo = Convert.ToInt16(numericUpDown4.Value);
            }
            catch (FormatException)
            {
                MessageBox.Show("Введите правильно минуты!", "Ошибка!");
                return;
            }
            try
            {
                mp = Convert.ToInt16(numericUpDown6.Value);
            }
            catch (FormatException)
            {
                MessageBox.Show("Введите правильно минуты!", "Ошибка!");
                return;
            }

            switch (mo1)
            {
                case "Январь": m1 = 1; break;
                case "Февраль": m1 = 2; break;
                case "Март": m1 = 3; break;
                case "Апрель": m1 = 4; break;
                case "Май": m1 = 5; break;
                case "Июнь": m1 = 6; break;
                case "Июль": m1 = 7; break;
                case "Август": m1 = 8; break;
                case "Сентябрь": m1 = 9; break;
                case "Октябрь": m1 = 10; break;
                case "Ноябрь": m1 = 11; break;
                case "Декабрь": m1 = 12; break;

                default: MessageBox.Show("Введите дату правильно!", "Ошибка!"); comboBox1.Text = ""; break;
            }
            switch (mo2)
            {
                case "Январь": m2 = 1; break;
                case "Февраль": m2 = 2; break;
                case "Март": m2 = 3; break;
                case "Апрель": m2 = 4; break;
                case "Май": m2 = 5; break;
                case "Июнь": m2 = 6; break;
                case "Июль": m2 = 7; break;
                case "Август": m2 = 8; break;
                case "Сентябрь": m2 = 9; break;
                case "Октябрь": m2 = 10; break;
                case "Ноябрь": m2 = 11; break;
                case "Декабрь": m2 = 12; break;

                default: MessageBox.Show("Введите дату правильно!", "Ошибка!"); comboBox1.Text = ""; break;
            }
            c = Math.DivRem(y1, 4, out n);
            c = Math.DivRem(y1, 400, out d);
            c = Math.DivRem(y1, 100, out b);
            if ((m1 == 2) && (d1 > 28))
            {
                if (d == 0)
                {
                    d1 = 29; comboBox3.Text = "29";
                }
                else if (b == 0)
                {
                    d1 = 28; comboBox3.Text = "28";
                }
                else if (n == 0)
                {
                    d1 = 29; comboBox3.Text = "29";
                }
                else
                {
                    d1 = 28; comboBox3.Text = "28";
                }
            }
            c = Math.DivRem(y2, 4, out n);
            c = Math.DivRem(y2, 400, out d);
            c = Math.DivRem(y2, 100, out b);
            if ((m2 == 2) && (d2 > 28))
            {
                if (d == 0)
                {
                    d2 = 29; comboBox4.Text = "29";
                }
                else if (b == 0)
                {
                    d2 = 28; comboBox4.Text = "28";
                }
                else if (n == 0)
                {
                    d2 = 29; comboBox4.Text = "29";
                }
                else
                {
                    d2 = 28; comboBox4.Text = "28";
                }
            }
            if (d1 == 31)
                switch (m1)
                {
                    case 4: d1 = 30; comboBox3.Text = "30"; break;
                    case 6: d1 = 30; comboBox3.Text = "30"; break;
                    case 9: d1 = 30; comboBox3.Text = "30"; break;
                    case 11: d1 = 30; comboBox3.Text = "30"; break;
                    case 1: d1 = 31; comboBox3.Text = "31"; break;
                    case 3: d1 = 31; comboBox3.Text = "31"; break;
                    case 5: d1 = 31; comboBox3.Text = "31"; break;
                    case 7: d1 = 31; comboBox3.Text = "31"; break;
                    case 8: d1 = 31; comboBox3.Text = "31"; break;
                    case 10: d1 = 31; comboBox3.Text = "31"; break;
                    case 12: d1 = 31; comboBox3.Text = "31"; break;

                   
                }
           
            if (d2 == 31)
                switch (m2)
                {
                    case 4: d2 = 30; comboBox4.Text = "30"; break;
                    case 6: d2 = 30; comboBox4.Text = "30"; break;
                    case 9: d2 = 30; comboBox4.Text = "30"; break;
                    case 11: d2 = 30; comboBox4.Text = "30"; break;
                    case 1: d1 = 31; comboBox3.Text = "31"; break;
                    case 3: d1 = 31; comboBox3.Text = "31"; break;
                    case 5: d1 = 31; comboBox3.Text = "31"; break;
                    case 7: d1 = 31; comboBox3.Text = "31"; break;
                    case 8: d1 = 31; comboBox3.Text = "31"; break;
                    case 10: d1 = 31; comboBox3.Text = "31"; break;
                    case 12: d1 = 31; comboBox3.Text = "31"; break;

                    
                }
            if (y2 < y1) { MessageBox.Show("Год прибытия не может быть меньше года отправления!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }
            button1.Enabled = true;
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int d1, d2, m1 = 0, m2 = 0, y1, y2, c, b, n, d, i, r1 = 0, r2 = 0;
            string mo1, mo2;
            d1 = Convert.ToInt16(comboBox3.Text);
            d2 = Convert.ToInt16(comboBox4.Text);
            mo1 = Convert.ToString(comboBox1.Text);
            mo2 = Convert.ToString(comboBox2.Text);
            y1 = Convert.ToInt16(numericUpDown1.Value);
            y2 = Convert.ToInt16(numericUpDown2.Value);
                       c = (d2 - d1) + (m2 - m1) * 31 + r1 + (y2 - y1) * 365 + r2;
                DateTime u1 = new DateTime((int) y1, (int) m1, (int) d1,(int) ho, (int)mo, 0, 0);
                DateTime u2 = new DateTime((int)y2, (int)m2, (int)d2, (int)Hp, (int)mp, 0, 0);
                TimeSpan s = u2.Subtract(u1);
                textBox1.Text =s.Days.ToString();
                textBox2.Text = s.Hours.ToString();
                textBox3.Text = s.Minutes.ToString();
        }
       

Заранее благодарна! smile В принципе- все остальное- он рассчитывает прекрасно! не знаю почему он не может с этими датами((
PM MAIL ICQ   Вверх
Damarus
Дата 1.6.2007, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: нет
Всего: 29



 smile 
Цитата(Integra @  1.6.2007,  13:08 Найти цитируемый пост)
Код  части программы представлен ниже: 

 smile Девушка, где вы научились так обрабатывать исключения?
PM MAIL ICQ Jabber   Вверх
Integra
Дата 2.6.2007, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 23.4.2007
Где: Омск

Репутация: нет
Всего: нет



Я совсем недавно начала изучать C#, так что  обрабатываю исключения- как понимаю  smile 
Я и обратилась сюда, дабы найти помощи...  smile 
а как через datetimepicker считывать?? smile 
PM MAIL ICQ   Вверх
Damarus
Дата 2.6.2007, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: нет
Всего: 29



Код
DateTime time1 = DateTime.Parse(dateTimePicker1.Text);
DateTime time2 = DateTime.Parse(dateTimePicker2.Text);
TimeSpan result = time2.Subtract(time1);


Это сообщение отредактировал(а) Damarus - 2.6.2007, 17:35
PM MAIL ICQ Jabber   Вверх
Naum
Дата 4.6.2007, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 1
Всего: 15



Damarus, ИМХО, все-таки лучше по-другому ;)
Код

DateTime time1 = dateTimePicker1.Value;
DateTime time2 = dateTimePicker2.Value;
TimeSpan result = time2.Subtract(time1);



--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
Damarus
Дата 4.6.2007, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: нет
Всего: 29



Цитата(Naum @  4.6.2007,  11:03 Найти цитируемый пост)
Damarus, ИМХО, все-таки лучше по-другому ;)

Да, ступил я.  smile В своё оправдание могу сказать, что на шарпе не пишу, а беглый поиск по MSDN Value не выявил  smile 
PM MAIL ICQ Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0572 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.