struct和time_t的计算错误
Wrong computations for struct and time_t
嗨,我正在实现一个算法,用于捕获市场数据并将其存储在基于时间的数组中。我哪里出错了,不知道在哪里。此函数在每个市场数据点上运行。思路是计算iCandleTime
//Fucntion to print Market Data Parameters
struct tm * timeinfo;
struct tm sStartTime = {00, 16, 15,15,10,116};
struct tm sEndTime = {00, 16, 16,15,10,116};
struct tm sCandleStartTime = {00, 16, 15,15,10,116};
time_t startTime;
time_t endTime;
time_t candleStartTime;
time_t curTime;
int iCandleTime = 120;
int iTimeInterval = 0;
int iNoCandles = 0;
int iCandleNumber = 0;
static float dNormalOpen = 0, dNormalClose = 0;
static float ohlc[375][4];
int openFlag = 0;
void PrintMarketData(void **args,nsString sPfName)
{
char sMsg[200];
nsString sFunctionName = "PrintMarketData";
nsString sToken;
sToken = GetPfUserParamValue(sPfName,"CashToken");
double dLtp=GetDoubleValue(GetParam(sToken, 6));
curTime = time (NULL);
//timeinfo = localtime (&curTime);
startTime = mktime(&sStartTime);
endTime = mktime(&sEndTime);
candleStartTime = mktime(&sCandleStartTime);
iTimeInterval = difftime(endTime, startTime);
iNoCandles = iTimeInterval / iCandleTime;
if((difftime(curTime,startTime) >=0) && (difftime(curTime,endTime) < 0) && iCandleNumber<iNoCandles)
{
if((difftime(curTime,candleStartTime) >= 0) && (openFlag == 0))
{
dNormalOpen = dLtp;
ohlc[iCandleNumber][0] = dNormalOpen;
openFlag = 1; //Open is populated in the OHLC Candle
printf("ST:%s",ctime(&candleStartTime));
printf(">>> Open:%f CurTime:%s > ST:%s",dNormalOpen,ctime(&curTime),ctime(&candleStartTime));
}
else
{
printf("Not in open interval...already set");
}
if(difftime(curTime,(candleStartTime+iCandleTime)) < 0)
{
time_t temp = candleStartTime+iCandleTime;
dNormalClose = dLtp;
ohlc[iCandleNumber][3] = dNormalClose;
printf("### Close:%f CurTime:%s < ET:%s",dNormalClose,ctime(&curTime),ctime(&temp));//incorrect print
}
else
{
//Log("Not in close interval...already set");
}
if((difftime(curTime,(candleStartTime+iCandleTime)) >0) && (openFlag == 1))
{
time_t temp = candleStartTime+iCandleTime;
printf("Temp Time %s",ctime(&candleStartTime)); //correct print
printf("$$$ Candle No:%d, Open:%f Close:%f Open Time:%s Close Time:%s",iCandleNumber,dNormalOpen,dNormalClose,ctime(&candleStartTime),ctime(&temp)); //incorrect print
openFlag = 0; //Reset flag for next candle
iCandleNumber = iCandleNumber + 1; //Increment candle number
candleStartTime = candleStartTime + iCandleTime;
printf("Incremented Time %s",ctime(&temp));
}
}
else
{
printf("Outside Starttime & Endtime ");
snprintf(sMsg, 200,"Outside Starttime & Endtime ");
WriteLog(args,sInfo,sFunctionName,sPfName,sMsg);
}
}
我在两个地方打印的时间在一个地方是正确的,在另一个地方是错误的。循环也出了问题。我是否在时间结构和time_t的事情上犯了任何错误请帮助提前感谢
在调用ctime时,例如:
printf("$$$ Candle No:%d, Open:%f Close:%f Open Time:%s Close Time:%s",
iCandleNumber,dNormalOpen,dNormalClose,
ctime(&candleStartTime),ctime(&temp)); //incorrect print
调用ctime
两次。然而,ctime
的文档说:"对ctime的调用修改了单个静态分配的缓冲区",所以你只是覆盖了一个调用ctime
的结果与另一个调用ctime
的结果。
先调用它们,然后把结果复制到你自己的缓冲区
相关文章:
- 我的字符计数代码计算错误.为什么
- 为什么 2 个双精度值之间的差值计算错误?
- C++ openmp 并行计算计算错误的结果
- Qt qreal计算错误
- C 并行矩阵乘法,计算错误
- Arduino计算错误 - 不应该时给出负值
- 当尺寸变大时,会出现矩阵计算错误
- C++ if 语句数学计算错误
- 浮点数的不准确导致计算错误
- 优化标志会导致计算错误
- Kahan求和算法在GCC编译时存在较大的计算错误
- 为什么在函数中传递参数时会出现算术计算错误
- 增加数组大小时 CUDA 主体磁贴计算错误代码 77
- OpenGL漫射照明计算错误
- 具有参数计算错误的重载函数
- 我的程序中有计算错误吗
- 在C++中使用ceil函数时出现计算错误
- 模拟读数计算错误
- struct和time_t的计算错误
- Pow()计算错误