0 / 0 / 1
Регистрация: 30.10.2013
Сообщений: 114
1

Разность двух дат и времен

16.05.2014, 22:24. Показов 1978. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
DateTime date1 = DateTime.Now;
            DateTime date2 = alarmTime;
 
 
            string diff = date2.Subtract(date1).ToString();
            label8.Text = diff;
оба времени заданы как NN.NN.NN nn:nn:nn
срабатывание идет после нажатия кнопки Океу
почему то
1. показывает правильную разность только после второго нажатия Океу
2. показывает миллисекунды
как исправить оба косяка?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.05.2014, 22:24
Ответы с готовыми решениями:

Разность двух дат
Добрый день. Есть такой вопрос: хочу найти разницу двух дат. Одна переменная - это константа,...

разность двух дат
в dateTimePicker1 - одна дата в dateTimePicker2 - вторая дата нужно посчитать их разность, те...

Разность двух дат
Добрый день! Есть такая строчка: If CDate(TextBox1.Text) = CDate(excel_sheet.Cells(row, 1)) Then...

Разность двух дат(из Datatimepicker и бд)
Здравствуйте! Подскажите,как сделать разность двух дат:одна из datatimepicker,а другая из БД(в бд...

13
8927 / 4839 / 1885
Регистрация: 11.02.2013
Сообщений: 10,246
16.05.2014, 22:45 2
  1. Это весь код кнопки?
  2. Нужно задать формат вывода "dd.MM.YY hh:mm:ss"
0
0 / 0 / 1
Регистрация: 30.10.2013
Сообщений: 114
16.05.2014, 22:50  [ТС] 3
нет, не весь.
вот вообще весь код. это элемент управления - будильник.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
public partial class Alarm : UserControl
    {
        private DateTime alarmTime;
        private bool alarmEnabled;
        private string alarmSound;
        private string alarmMessage;
        private System.Windows.Media.MediaPlayer player;
        public int seconds, minutes, hours;
 
        public Alarm()
        {
            player = new System.Windows.Media.MediaPlayer();
            
            InitializeComponent();
        }
 
        private void settingsOKButton_Click(object sender, EventArgs e)
        {
            DateTime date1 = DateTime.Now;
            DateTime date2 = alarmTime;
 
 
            string diff = date2.Subtract(date1).ToString();
            label8.Text = diff;
 
            alarmSound = SoundFilenameTextBox.Text;
            if (alarmSound.Length > 0)
            {
                player.Open(new Uri(alarmSound));
            }
            
            alarmMessage = MessageTextBox.Text;
            alarmEnabled = AlarmEnabledCheckBox.Checked;
 
            if (alarmEnabled)
            {
                alarmTime = AlarmDateTimePicker.Value;
                RolloverTime();
            }
 
            timer1.Enabled = alarmEnabled;
        }
 
        private void Alarm_Load(object sender, EventArgs e)
        {
            label5.Text = "";
            timer2.Enabled = true;
            label6.Text = DateTime.Today.ToLongDateString();
            alarmEnabled = false;
 
            alarmTime = DateTime.Now;
            AlarmDateTimePicker.Value = alarmTime;
            alarmMessage = MessageTextBox.Text;
 
            openFileDialog1.InitialDirectory = Environment.SpecialFolder.MyMusic.ToString();
        }
 
        private void RolloverTime()
        {
            if (DateTime.Now.TimeOfDay.CompareTo(alarmTime.TimeOfDay) > 0)
            {
                alarmTime = new DateTime(DateTime.Now.Year,
                    DateTime.Now.Month, DateTime.Now.Day + 1,
                    alarmTime.Hour, alarmTime.Minute, alarmTime.Second);
            }
            else
            {
                alarmTime = new DateTime(DateTime.Now.Year,
                    DateTime.Now.Month, DateTime.Now.Day,
                    alarmTime.Hour, alarmTime.Minute, alarmTime.Second);
            }
        }
 
        private void SoundBrowseButton_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                alarmSound = openFileDialog1.FileName;
                SoundFilenameTextBox.Text = alarmSound;
            }
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (DateTime.Now.CompareTo(alarmTime) >= 0)
            {
                RolloverTime();
                if (alarmSound.Length > 0)
                {
                    player.Play();
                }
                if (MessageBox.Show(MessageTextBox.Text) == DialogResult.OK)
                {
                    player.Stop();
                }
            }
        }
 
        private void timer2_Tick(object sender, EventArgs e)
        {
            label5.Text = DateTime.Now.ToLongTimeString();
        }
    }
0
8927 / 4839 / 1885
Регистрация: 11.02.2013
Сообщений: 10,246
16.05.2014, 22:56 4
Нужно проверять, где выставляется значение поля alarmtime. А весь код из первого поста можно свести к одной строке:
C#
1
label8.Text = alarmTime.Subtract(DateTime.Now).ToString("dd.MM.YY hh:mm:ss");
0
0 / 0 / 1
Регистрация: 30.10.2013
Сообщений: 114
16.05.2014, 23:21  [ТС] 5
так не работает. вылетает после нажатия кнопки
только если
C#
1
label8.Text = alarmTime.Subtract(DateTime.Now).ToString();
это не избавляет ни от одной проблемы
0
8927 / 4839 / 1885
Регистрация: 11.02.2013
Сообщений: 10,246
17.05.2014, 15:36 6
Насчёт срабатывания нужно проверять в пошаговой отладке. А формат не работает, видимо, потому что фреймворк ниже 4. Тогда можно так
C#
1
label8.Text = string.Format("dd.MM.YY hh:mm:ss", alarmTime.Subtract(DateTime.Now).ToString());
0
0 / 0 / 1
Регистрация: 30.10.2013
Сообщений: 114
17.05.2014, 20:21  [ТС] 7
ViterAlex, выводит эту надпись dd.MM.YY hh:mm:ss вместо времени
0
993 / 891 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
17.05.2014, 21:18 8
C#
1
label8.Text = string.Format("dd.MM.YY hh:mm:ss", alarmTime.Subtract(DateTime.Now));
Добавлено через 19 секунд
Товарищ ViterAlex лишний ToString() скопировал
0
0 / 0 / 1
Регистрация: 30.10.2013
Сообщений: 114
17.05.2014, 21:40  [ТС] 9
Spawn, тот же самый результат
0
993 / 891 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
17.05.2014, 21:45 10
ой, вот... и я не идеален

C#
1
label8.Text = string.Format("{0:dd.MM.YY hh:mm:ss}", alarmTime.Subtract(DateTime.Now));
0
0 / 0 / 1
Регистрация: 30.10.2013
Сообщений: 114
17.05.2014, 23:17  [ТС] 11
Spawn, а так вылетает
0
993 / 891 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
17.05.2014, 23:24 12
А теперь еще раз и с конкретными ошибками...

Добавлено через 3 минуты
И в конце-концов, постарайтесь и сами что-нибудь сделать. Вот статья в помощь.
0
0 / 0 / 1
Регистрация: 30.10.2013
Сообщений: 114
17.05.2014, 23:44  [ТС] 13
Spawn, мои попытки закончились безуспешно. иначе меня не было бы здесь
"Входная строка имела неверный формат."
0
0 / 0 / 1
Регистрация: 30.10.2013
Сообщений: 114
17.05.2014, 23:48  [ТС] 14
вот весь проект.
Вложения
Тип файла: zip AlarmClockControl_gm.zip (52.5 Кб, 9 просмотров)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.05.2014, 23:48
Помогаю со студенческими работами здесь

Как получить разность двух дат?
Есть 2 даты в строковом формате '2003.05.27 10:00:00' и '2003.05.27 20:00:00'. Как получить их...

Перегрузка операции, найти разность двух дат
«Дата». Данные класса: число, месяц, год. Операции: нахождение разности двух дат в днях,...

Выборка данных по условию - разность двух полей дат не более суток
Уважаемые гуру! В таблице DataSet есть 2 поля типа DateTime. Нужно с помощью select выбрать...

Разность времен
Здравствуйте, уважаемые программисты! помогите пожалуйста с задачкой! условие задачи - Даны...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru