我正在将一个 C 应用程序从 Solaris 移植到 RedHat,而这个功能在 RedHat 上不能很好地工作(我需要你的帮助来确定原因):
int toTimestamp (const char *InputDate, const char *DateFormat, time_t *lTimestamp){
struct tm tm;
if (NULL == strptime(InputDate, DateFormat, &tm)){
return FALSE;
}
*lTimestamp = mktime(&tm);
return TRUE;
}
基本上,它以指定格式从作为字符串传入的日期时间生成 UNIX 时间戳。
char *effPaymentDate = NULL;
char *CohDueDate = NULL;
//...
effPaymentDate = PayRec->RecDate;//char RecDate[8+1];, value 20141005
CohDueDate = PayRec->DueDate;//char DueDate[8+1];, value 20140820
time_t currentDateUNIX;
time_t DueDateUNIX;
if (FALSE == toTimestamp(CohDueDate, "%Y%m%d", &DueDateUNIX) ||
FALSE == toTimestamp(effPaymentDate, "%Y%m%d", ¤tDateUNIX)) {
return NULL;
}
//...
但是,它似乎无法正常工作(对于 effPaymentDate 可以正常工作,为 CohDueDate 提供错误的日期 - 即 2543 年) - 任何想法为什么?