2016-10-13 3 views
-2

В следующем коде вместо текущего системного времени я хочу вычесть 5 минут как целое число I от datetime.now().tostring(). Таким образом, предупреждение может быть воспроизведено за 5 минут до того, как системное время соответствует времени в labeltext1.Как вычесть определенное количество минут из значения `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, даже если он не будет использоваться. – CodeCaster

ответ

2

Вы можете вычесть из TimeSpanDateTime, как показано ниже:

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 исключение исключения timepan: добавленное или вычитаемое значение приводит к не представимому DateTime. –

Смежные вопросы