我面临一个小问题,它是一个简单的秒表,但是我希望每次程序关闭时或单击停止时都保存最后的日期,以计算每次单击开始直到停止制造时间之类的时间。
例如:如果我单击今天开始5秒钟,然后关闭程序,我想保存5秒钟。
然后,当我重新打开程序时,它从零开始,但是总和为5秒。
如果单击开始8秒钟,它将变成:
如果我关闭程序并重新打开它,然后单击开始7秒钟,则>]
但是我一直都用(“ HH:mm:ss”)进行转换
变得那样
00:00:00 converts to 2/23/2020 12:00:00 AM.
我希望它转换为没有任何日期(月,年...)的00:00:00
因为求和时给我错误的数字。
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'));
}));
}
我面临一个小问题,它是一个简单的秒表,但是我希望每次程序关闭时或单击停止时都保存上一个日期,以计算每次单击开始直到停止为止的时间...
我看到您正在使用DateTime
来保留“累计时间”或经过了多少时间。不要为此使用DateTime。顾名思义,DateTime是用于保留DATE和TIME部分,并且您认为“自5天前开始经过了多少时间?”您不会在“ 5月5日”回答此类问题。您需要一些与日历日期无关的东西。只是时间本身。