Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/47: Рейтинг темы: голосов - 47, средняя оценка - 4.91
 Аватар для beats
101 / 42 / 9
Регистрация: 09.12.2012
Сообщений: 597
.NET 4.x

Сколько прошло времени в сек

06.03.2013, 22:04. Показов 9125. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть прога с таймером
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Threading;
using System.ComponentModel;
using System.Data;
using System.Drawing;
 
 
namespace WPFTimer1
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        DispatcherTimer _timer;
        public MainWindow()
        {
            InitializeComponent();
            _timer = new DispatcherTimer();
            _timer.Tick += new EventHandler(delegate(object s, EventArgs a)
            {
                status2.Text = "Закончен  " + DateTime.Now;
                System.Diagnostics.Process p = new System.Diagnostics.Process();
                p.StartInfo.FileName = "cmd.exe";
                p.StartInfo.Arguments = "/c shutdown -s -t 00";
                p.Start();
            });
        }
 
        private void Start_Click(object sender, RoutedEventArgs e)
        {
 
            // Установка интервала
            _timer.Interval = TimeSpan.FromSeconds(Convert.ToDouble(time.Text));
 
            // Запуск таймера
            _timer.Start();
 
            status.Text = "Запущен   " + DateTime.Now;
        }
 
        private void Stop_Click(object sender, RoutedEventArgs e)
        {
            // Остановка таймера
            _timer.Stop();
 
            status.Text = "Остановлен";
        }
    }
}
Которая после ввода количества секунд производит действие по истечению их.
Нужно как то в секундах так же записать в int переменную сколько уже прошло с момента старта таймера. Подскажите пожалуйста!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.03.2013, 22:04
Ответы с готовыми решениями:

Сколько указаных дней прошло за промежуток времени в DatePicker
всем привет, подскажыте пожалуста, предположым есть два дейтапикера на одном указано 15.01.2012 на другом 25.06.2012 как узнать сколько за...

Сколько примерно потребуется времени на реализацию ИС (C# + MS SQL)?
Думаю писать диплом по разработке информационной системы, успею ли написать и реализовать за 2 месяца или такой проект одной не потянуть за...

А как найти сколько времени прошло начиная с 1970 года?
Собственно вот и вопрос. это нужно для того, чтобы вычеслить разницу в секундах между последним заходом пользователя на сайт и текущим...

18
 Аватар для MegaSinner
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
06.03.2013, 23:07
можно так:
C#
1
2
3
            int start = DateTime.Now.Millisecond;
            .....
            int difference = (DateTime.Now.Millisecond - start)/1000;
1
 Аватар для beats
101 / 42 / 9
Регистрация: 09.12.2012
Сообщений: 597
06.03.2013, 23:52  [ТС]
ну попросил же в секундах!

Добавлено через 10 минут
Будет вот так если я не ошибаюсь?
C#
1
2
3
4
           
int start = DateTime.Now.Second;
.....
int difference = (DateTime.Now.Second - start);
Добавлено через 7 минут
Не а не прет. Код херовый, он от текущих секунд отнимает и может получиться число с минусом. т.е. вообще не то
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
07.03.2013, 00:52
C#
1
2
3
            var start = DateTime.Now;
            .....
            int difference = Convert.ToInt32((DateTime.Now - start).TotalSeconds);
1
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
07.03.2013, 06:11
Stopwatch - класс не подойдет?
0
 Аватар для MegaSinner
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
07.03.2013, 12:15
Цитата Сообщение от beats Посмотреть сообщение
int start = DateTime.Now.Second;
.....
int difference = (DateTime.Now.Second - start);
такой метод показывает текущую секунду, что на часах, а не общее время. Мой ответ - правильный, и я же написал "/1000".
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
07.03.2013, 12:31
Winhttp22, ну если автору нужны только секунды, то ошибка в 16мс, думаю, не будет критичной.

MegaSinner, ваш метод показывает текущую миллисекунду, что на часах.
0
 Аватар для MegaSinner
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
07.03.2013, 12:34
Цитата Сообщение от kolorotur Посмотреть сообщение
MegaSinner, ваш метод показывает текущую миллисекунду, что на часах.
Да, точно. Вот как можно:
C#
1
2
3
long start = DateTime.Now.Ticks/TimeSpan.TicksPerMillisecond;
.....
long difference = ((DateTime.Now.Ticks/TimeSpan.TicksPerMillisecond - start)/1000);
0
 Аватар для beats
101 / 42 / 9
Регистрация: 09.12.2012
Сообщений: 597
07.03.2013, 17:15  [ТС]
Цитата Сообщение от MegaSinner Посмотреть сообщение
Да, точно. Вот как можно:
C#
1
2
3
long start = DateTime.Now.Ticks/TimeSpan.TicksPerMillisecond;
.....
long difference = ((DateTime.Now.Ticks/TimeSpan.TicksPerMillisecond - start)/1000);
Спасибо! Этот код действительно работает и показывает как надо!, только у меня у тебе вопрос, к чему эти лишние действия с делением? Если ответ нужен в секундах то зачем все так усложнять? я бы сделал тогда уж вот так:
C#
1
2
3
long start = DateTime.Now.Ticks/TimeSpan.TicksPerSecond;
.....
long difference = (DateTime.Now.Ticks/TimeSpan.TicksPerSecond - start);
и работает так же исправно.
Или есть какой то научных факт большей точности если в милисекундах замерять?
0
 Аватар для MegaSinner
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
07.03.2013, 18:08
1) Да, там чуть-чуть лишнего кода. 2) Ну как "точно", оно же не округливает - 2999/1000 = 2.
0
 Аватар для beats
101 / 42 / 9
Регистрация: 09.12.2012
Сообщений: 597
07.03.2013, 18:35  [ТС]
Ясно. Но в моей задаче будет совершенно безразлично если время работы будет с погрешностью +- 1 минуту
Как думаешь большей погрешности не будет при моем варианте с секундами без деления?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
07.03.2013, 19:51
beats, а чем вас не устроил предложенный мной вариант?
Там же еще меньше кода.
0
 Аватар для beats
101 / 42 / 9
Регистрация: 09.12.2012
Сообщений: 597
07.03.2013, 20:56  [ТС]
Ну я просто его пропустил потому что уже получил рабочий вариант от MegaSinner.
А так быстро взглянув кажется там опять из текущей даты отнимается сохраненная. проверять не стал
0
 Аватар для beats
101 / 42 / 9
Регистрация: 09.12.2012
Сообщений: 597
10.03.2013, 16:58  [ТС]
Вообщем все работает. Вот текущие состояние кода:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Threading;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Diagnostics;
 
namespace WpfTimerAutoTest
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        DateTime saveNow = DateTime.Now;
        DispatcherTimer _timer;
        public MainWindow()
        {
            InitializeComponent();
 
            _timer = new DispatcherTimer();
            _timer.Tick += new EventHandler(delegate(object s, EventArgs a)
            {
                status2.Text = "Закончен  " + DateTime.Now;
                //System.Diagnostics.Process p = new System.Diagnostics.Process();
                //p.StartInfo.FileName = "cmd.exe";
                //p.StartInfo.Arguments = "/c shutdown -s -t 00";
                //p.Start();
                 MessageBox.Show("Время отработало!");
            });
        }
 
        public void Window_Loaded(object sender, RoutedEventArgs e)
        {
            Properties.Settings.Default.start = DateTime.Now.Ticks / TimeSpan.TicksPerSecond;
            // Установка интервала
            _timer.Interval = TimeSpan.FromSeconds(Properties.Settings.Default.TimeLimit);
            // Запуск таймера
            _timer.Start();
            status2.Text = "Запущен в  " + DateTime.Now;
        }
 
        public void Start_Click(object sender, RoutedEventArgs e)
        {
            long difference = (DateTime.Now.Ticks / TimeSpan.TicksPerSecond - Properties.Settings.Default.start);
            // Установка интервала
           // _timer.Interval = TimeSpan.FromSeconds(Convert.ToDouble(time.Text));
 
            // Запуск таймера
            //_timer.Start();
            
            DateTime saveOld = DateTime.Now;
            saveOld = saveNow + _timer.Interval;
            //Properties.Settings.Default.TimeLimitToday = Properties.Settings.Default.TimeLimit - saveNow;
 
           // status.Text = "Запущен   " + DateTime.Now;
            status3.Text = "Прошло " + difference;
            status4.Text = "Сейчас  " + DateTime.Now;
           
 
            
        }
 
        private void Stop_Click(object sender, RoutedEventArgs e)
        {
            // Остановка таймера
            _timer.Stop();
 
            status.Text = "Остановлен";
        }
 
       
    }
}
Чтобы не создавать новую тему, сразу Вам вопрос. Если не сложно можите подсказать как сделать выполнение некоторого блока кода раз в 5 минут, а еще одного раз в 3 секунды?
Я просто не знаю надо ли по таймеру равнять или есть какое то свойство обновления формы?
0
 Аватар для MegaSinner
99 / 95 / 9
Регистрация: 09.04.2010
Сообщений: 746
10.03.2013, 23:56
Попробуй с таймерами, в отдельном потоке..
0
 Аватар для beats
101 / 42 / 9
Регистрация: 09.12.2012
Сообщений: 597
11.03.2013, 00:00  [ТС]
Ага уже сделал). Четко работает. Под каждую задачу со своим интервалом - свой таймер. И самое главное код помещенный в _timer.Tick += new EventHandler(delegate(object s, EventArgs a) исполняется циклично, как мне и нужно было без всякого сброса и т.д.!)
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
11.03.2013, 00:24
Цитата Сообщение от beats Посмотреть сообщение
Под каждую задачу со своим интервалом - свой таймер.
Круто, ага.
Особенно, если не знать, что для создания таймера используется системный ресурс. Ограниченный.
Который, к тому же, требуется для окон, менюшек и прочих графических элементов, вплоть то кистей.
Его много (вроде как в районе 10К на процесс), но всё же...
0
 Аватар для beats
101 / 42 / 9
Регистрация: 09.12.2012
Сообщений: 597
11.03.2013, 14:23  [ТС]
Да ты прав, за нагрузкой надо следить. Вот допишу основные функции и посмотрю.
Можешь сразу подсказать чем замерять? Диспетчера задач как я понимаю не хватит для развернутых данных?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
11.03.2013, 14:27
Цитата Сообщение от beats Посмотреть сообщение
Можешь сразу подсказать чем замерять? Диспетчера задач как я понимаю не хватит для развернутых данных?
Включите в диспетчере колонку GDI Objects — она довольно неплохое представление дает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.03.2013, 14:27
Помогаю со студенческими работами здесь

Как узнать сколько времени прошло между событиями
group.DataChanged += new Opc.Da.DataChangedEventHandler(group_DataChanged); Не могу сообразить куда выставить sWatch.Start();...

Конвертировать строку во время и вычислить сколько прошло времени с начала отсчета
Здравствуйте, уважаемые форумчане. Помогите пожалуйста. Есть строка вида 6:30:0 -это время (начало отсчета). Есть строка вида:...

Узнать сколько времени прошло от начала запуска программы (без милисекунд)
Здравствуйте, подскажите пожалуйста в одном вопросе. Я использую такую конструкцию чтобы узнать сколько времени прошло от начала...

Определить, сколько дней прошло с начала года
Формат день.месяц.год Определить сколько дней прошло с начала года, дату предыдущего дня Помогите пожалуйста :gsorry:

Определить сколько полных минут прошло с начала очередного часа
С начала суток прошло п секунд. Определить сколько полных минут прошло с начала очередного часа.


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru