Я сталкиваюсь с небольшой проблемой, это простой секундомер, но я хочу сохранять последнюю дату каждый раз, когда программа закрывает ее или нажимает «Стоп», чтобы вычислять время для каждого нажатия кнопки «Пуск» до тех пор, пока не остановится что-то вроде времени изготовления.
В качестве примера: если я нажал кнопку запуска сегодня на 5 секунд, то закрыл программу, хочу сохранить 5 секунд.
Затем, когда я снова открываю программу, она начинается с нуля, но делает суммирование 5 секунд.
- Второй раз = первый раз + второй раз
- Второй раз = 05 + 000 ..
Если я нажал кнопку Пуск для 8 секунд, это станет:
Если я закрою программу и снова открою ее и нажму кнопку Пуск в течение 7 секунд
- во второй раз = 7 + 13 = 20 секунд
но все время я конвертирую его в ("ЧЧ: мм: сс")
Так и получилось
00:00:00 converts to 2/23/2020 12:00:00 AM.
Я хочу преобразовать его в 00:00:00 без какой-либо даты (месяц, год ...)
B потому что, когда я делаю суммирование, это дает мне неправильный номер.
System.Timers.Timer t;
int D, H, m, s;
CultureInfo enUS = new CultureInfo("en-US");
DateTime Drawing;
DateTime Rent;
long Machine_time;
public Form1()
{
InitializeComponent();
Rent = Properties.Settings.Default.Drawing_Time;
}
private void Start_Click(object sender, EventArgs e)
{
t.Start();
}
private void Stop_Click(object sender, EventArgs e)
{
t.Stop();
try
{
// Drawing = DateTime.ParseExact(textBox1.Text, @"HH:mm:ss", CultureInfo.InvariantCulture);
Drawing = DateTime.Parse(textBox1.Text);
// Drawing = DateTime.Now.ToString( @"HH:mm:ss");
Console.WriteLine("{0} converts to {1}.", textBox1.Text, Drawing.ToString());
}
catch (FormatException)
{
Console.WriteLine("{0} is not in the correct format.", textBox1.Text);
}
Properties.Settings.Default.Drawing_Time = Drawing;
long elapsedTicks = Drawing.Ticks ;
Machine_time = elapsedTicks + Machine_time;
TimeSpan elapsedSpan = new TimeSpan(Machine_time);
MessageBox.Show(Drawing.ToString());
string message = elapsedSpan.ToString();
MessageBox.Show(message);
saveSettings();
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
Properties.Settings.Default.Machine_Time = Machine_Time ;
saveSettings();
t.Stop();
Application.DoEvents();
}
public void saveSettings()
{
try
{
Properties.Settings.Default.Save();
MessageBox.Show("Saved Settings");
}
catch (Exception e)
{
MessageBox.Show("Save Settings: " + e);
}
}
private void Form1_Load(object sender, EventArgs e)
{
t = new System.Timers.Timer();
t.Interval = 1000;
t.Elapsed += onTimeEvent;
}
private void onTimeEvent(object sender, System.Timers.ElapsedEventArgs e)
{
Invoke(new Action(() =>
{
s += 1;
if (s == 60)
{
s = 0;
m += 1;
}
if (m == 60)
{
m = 0;
H += 1;
}
if (H == 24)
{
H = 0;
D += 1;
}
labelResult.Text = string.Format("{0}:{1}:{2}:{3}", D.ToString().PadLeft(2, '0'), H.ToString().PadLeft(2, '0'), m.ToString().PadLeft(2, '0'), s.ToString().PadLeft(2, '0'));
textBox1.Text= string.Format("{0}:{1}:{2}", H.ToString().PadLeft(2, '0'), m.ToString().PadLeft(2, '0'), s.ToString().PadLeft(2, '0'));
}));
}