2016-07-08 2 views
-3

기본적으로 월, 일 및 연도를 확인하는 프로그램을 만들고 월 및 일 기준이 모두 충족되는 경우 코드를 실행하려고합니다. 예를 들어특정 날짜에 코드를 실행 하시겠습니까?

, 2016

의 내가 단순히 출력하는 프로그램을 원하는 몇 가지 코드를 가지고 있다고 가정 해 봅시다,의 날짜가 7 월 8 일이었다 가정 해 봅시다 "안녕하세요 세상을!" 이 날짜에.

이 코드를 2016 년 7 월 8 일에 실행하고 다른 날짜는 실행하지 않기를 바란다. 나는 이것에 대해 어떻게 갈 것인가?

+0

Stackoverflow에 오신 것을 환영합니다! 사람들이 일찍 문제를 해결하고 도움을 줄 수 있도록 코드 등의 노력을 기울여 질문을 자세히 작성해 주실 수 있습니까? 감사! – JRSofty

답변

2

특정 시간에 프로그램을 실행하려면 cron 또는 Windows 작업 스케줄러와 같은 외부 도구를 사용해야합니다. 코드 실행하고 당신은 그냥 약간의 특정 시간까지 작업을 지연 할 경우 이미

:-) 실행되어 있지 않은 경우 프로그램 자체를 실행할 수 없습니다, 그것은 ctime 헤더에있는 모든 재료가 무엇인지입니다.

time()localtime()을 사용하여 로컬 시간을 struct tm으로 가져 와서 특정 시간이 현재인지 확인하기 위해 필드를 검사 할 수 있습니다. 그렇다면 조치를 취하십시오. 그렇지 않은 경우 루프를 돌리고 다시 시도하십시오 (필요한 경우 적절한 지연이 있음).

#include <iostream> 
#include <iomanip> 
#include <ctime> 
using namespace std; 

int main() { 
    time_t now; 
    struct tm *tstr; 

    // Ensure first one is printed. 

    int lastSec = -99; 

    // Loop until time call fails, hopefully forever. 

    while ((now = time(0)) != (time_t)-1) { 
     // Get the local time into a structire. 

     tstr = localtime(&now); 

     // Print, store seconds if changed and multiple of five. 

     if ((lastSec != tstr->tm_sec) && ((tstr->tm_sec % 5) == 0)) { 
      cout << asctime(tstr); 
      lastSec = tstr->tm_sec; 
     } 
    } 

    return 0; 
} 
1

내가 time_to_executestd::chrono::system_clock::time_point입니다 std::this_thread::sleep_until(time_to_execute);을 사용합니다 :

는 예를 들면, 여기에 시간 만 5 초 경계에 출력하는 프로그램입니다.

질문 : 이제 어떻게 system_clock::time_point을 올바른 값으로 설정합니까?

Here is a free, open-source librarysystem_clock::time_point을 특정 날짜로 쉽게 설정할 수 있습니다. 사용법은 다음과 같습니다.

using namespace date; 
std::this_thread::sleep_until(sys_days{jul/8/2016}); 

2016-07-08 00:00:00 UTC에 트리거됩니다. 지역 시간 또는 임의의 시간대를 기준으로 오히려 트리거하려면 here is a companion library을 수행하십시오.

또한 C API로 내리고 std::tm의 필드 값을 설정하고 time_t으로 변환 한 다음 system_clock::time_point으로 변환 할 수 있습니다. 더럽고 오류가 발생하기 쉽고 타사 라이브러리가 필요하지 않습니다.

관련 문제