2015-10-19 67 views
0

是否可以確定是否有某個字符串用於前。 2015-10-19是日期,使用mktime()?我想避免像2015-a2-19a015x08-b9等字符串,我必須避免ifsswitch檢查字符串是否是使用mktime()中的日期c

謝謝。

+1

爲什麼你必須避免和切換?你試過什麼了? – Magisch

+0

由於在學校的硬件聲明。不幸的是,我不知道.. –

+1

Stackoverflow不是一項家庭作業服務。您應該自行完成以前的研究,並提供您嘗試過的代碼示例。 – Magisch

回答

0

嘗試掃描字符串轉換爲struct tm,然後調用上mktime

// returns 0 if not a valid date, !=0 otherwise 
int isValidDate(const char *s) 
{ 
    struct tm t = {}; 
    sscanf(s, "%d-%d-%d", &t.tm_year, &t.tm_month, &t.tm_day); 
    return ((int)mktime(&t) + 1); 
} 

mktime回報-1如果它不能在time_t表示,只要加一個它得到一個零。無需檢查sscanf的返回值,因爲無論如何它將導致mktime的失敗。

請注意,這隻會告訴您日期在Unix epoch(通常)中是否有效,因此1500-11-11將無效,即使它顯然是有效的日期。

相關問題