2016-10-13 65 views
-2

在下面的代码中,而不是当前的系统时间,我想从datetime.now().tostring()减去5分钟作为整数I.因此,警告可以在系统时间与labeltext1中的时间匹配之前5分钟播放。如何从“DateTime”值中减去一定数量的分钟?

private void timer1_Tick(object sender, EventArgs e) 
{ 
    label_time1.Text = DateTime.Now.ToString(); 
    mplayer = new SoundPlayer(); 
    mplayer.SoundLocation = (@"c:\users\woolsvalley\documents\visual studio 2015\Projects\WindowsFormsApplication17\WindowsFormsApplication17\Alarm.wav"); 
    if ((DateTime.Now.ToString("hh:mm tt") == ((textBox_ordertostart.Text)))) 
    { 
     mplayer.Play(); 
     pbuilder.ClearContent(); 

     pbuilder.AppendText("Order time for" + "" + comboBox_suburb.SelectedValue + "Start in" + 5 + "minutes"); 
     txt2speech.Speak(pbuilder); 
    } 
} 
+4

所以这是一个有关从日期时间减去问题?请专注于此,并放弃任何与“文本到语音”有关的任何事情。 – musefan

+0

'DateTime.Now.AddMinutes(-i)' –

+0

使用计时器让事情在预定时刻发生是一种不好的做法。即使不使用SoundPlayer,也正在初始化SoundPlayer。 – CodeCaster

回答

2

您可以按照以下减去DateTimeTimeSpan,:

DateTime fiveMinutesAgo = DateTime.Now - new TimeSpan(0,5,0); 
+1

另一种方法是'DateTime.Now.AddMinutes( - 5)'有些人可能会发现更容易阅读 –

+0

当我做DateTime.Now.AddMinutes(5)它的作品,但是当我使用DateTime.Now.AddMinutes(-5)它不,这就是问题... –

+0

GWLlosa抛出异常的时间跨度:增加或减少的值会导致无法表示的DateTime。 –