Вычесть одну секунду из заданного CTime

#winapi #visual-c #mfc

#winapi #visual-c #mfc

Вопрос:

Я работаю над проектом VC с использованием MFC. В моей функции есть объект CTime, который имеет значение «10/11/2016 03:00:00″……. что-то в этом роде.

Я хочу вычесть одну секунду из временной части. Так что это будет выглядеть

«10/11/2016 02:59:59»

Так, например, если значение CTime равно «22.10.2016 07:45:50», то после вычитания на 1 секунду оно должно быть «22.10.2016 07:45:49»

Я пытался,

CTime — 1, но это выдает ошибку.

Обновить:

Я исправил это с помощью,

 time_t myTime= CTime.GetTime();
myTime= myTime - 1;
  

time_t указывает время в секундах, и, таким образом, на данный момент оно прямолинейно.

Ответ №1:

Чтобы добавить или вычесть из a или из a CTime , вам нужно использовать CTimeSpan объект для указания продолжительности, которую вы хотите добавить или вычесть.

Например, чтобы вычесть секунду:

 CTime cNewTime = cOldTime - CTimeSpan(0, 0, 0, 1);
  

Комментарии:

1. Я исправил это, используя метод, который я только что добавил в качестве ОБНОВЛЕНИЯ. Я все еще голосую за ваш ответ за любезное предложение.

2. @Donsan: код, приведенный в этом ответе, намного более удобочитаем, чем предлагаемое вами решение. Это явно передает намерение автора ( «вычтите промежуток времени» ), что всегда должно быть вашей основной целью.