@@ -367,13 +367,13 @@ static npy_int64 asfreq_DtoB_forConvert(npy_int64 ordinal, char relation, asfreq
367
367
// needed for getDateInfo function
368
368
static npy_int64 asfreq_DtoD (npy_int64 ordinal , char relation , asfreq_info * af_info ) { return ordinal ; }
369
369
370
- static npy_int64 asfreq_DtoHIGHFREQ (npy_int64 ordinal , char relation , npy_int64 periodsPerDay ) {
370
+ static npy_int64 asfreq_DtoHIGHFREQ (npy_int64 ordinal , char relation , npy_int64 per_day ) {
371
371
if (ordinal >= HIGHFREQ_ORIG ) {
372
372
if (relation == 'S' ) {
373
- return (ordinal - HIGHFREQ_ORIG )* ( periodsPerDay ) + 1 ;
373
+ return (ordinal - HIGHFREQ_ORIG ) * per_day ;
374
374
}
375
375
else {
376
- return (ordinal - HIGHFREQ_ORIG + 1 )* ( periodsPerDay ) ;
376
+ return (ordinal - HIGHFREQ_ORIG + 1 ) * per_day - 1 ;
377
377
}
378
378
} else { return INT_ERR_CODE ; }
379
379
}
@@ -388,7 +388,7 @@ static npy_int64 asfreq_DtoS(npy_int64 ordinal, char relation, asfreq_info *af_i
388
388
//************ FROM SECONDLY ***************
389
389
390
390
static npy_int64 asfreq_StoD (npy_int64 ordinal , char relation , asfreq_info * af_info )
391
- { return (ordinal - 1 )/(60 * 60 * 24 ) + HIGHFREQ_ORIG ; }
391
+ { return (ordinal )/(60 * 60 * 24 ) + HIGHFREQ_ORIG ; }
392
392
393
393
static npy_int64 asfreq_StoA (npy_int64 ordinal , char relation , asfreq_info * af_info )
394
394
{ return asfreq_DtoA (asfreq_StoD (ordinal , relation , & NULL_AF_INFO ), relation , af_info ); }
@@ -410,7 +410,7 @@ static npy_int64 asfreq_StoH(npy_int64 ordinal, char relation, asfreq_info *af_i
410
410
//************ FROM MINUTELY ***************
411
411
412
412
static npy_int64 asfreq_TtoD (npy_int64 ordinal , char relation , asfreq_info * af_info )
413
- { return (ordinal - 1 )/(60 * 24 ) + HIGHFREQ_ORIG ; }
413
+ { return (ordinal )/(60 * 24 ) + HIGHFREQ_ORIG ; }
414
414
415
415
static npy_int64 asfreq_TtoA (npy_int64 ordinal , char relation , asfreq_info * af_info )
416
416
{ return asfreq_DtoA (asfreq_TtoD (ordinal , relation , & NULL_AF_INFO ), relation , af_info ); }
@@ -435,7 +435,7 @@ static npy_int64 asfreq_TtoS(npy_int64 ordinal, char relation, asfreq_info *af_i
435
435
//************ FROM HOURLY ***************
436
436
437
437
static npy_int64 asfreq_HtoD (npy_int64 ordinal , char relation , asfreq_info * af_info )
438
- { return ( ordinal - 1 )/ 24 + HIGHFREQ_ORIG ; }
438
+ { return ordinal / 24 + HIGHFREQ_ORIG ; }
439
439
static npy_int64 asfreq_HtoA (npy_int64 ordinal , char relation , asfreq_info * af_info )
440
440
{ return asfreq_DtoA (asfreq_HtoD (ordinal , relation , & NULL_AF_INFO ), relation , af_info ); }
441
441
static npy_int64 asfreq_HtoQ (npy_int64 ordinal , char relation , asfreq_info * af_info )
@@ -907,28 +907,27 @@ freq_conv_func get_asfreq_func(int fromFreq, int toFreq, int forConvert)
907
907
}
908
908
}
909
909
910
- double getAbsTime (int freq , npy_int64 dailyDate , npy_int64 originalDate ) {
910
+ double get_abs_time (int freq , npy_int64 daily_ord , npy_int64 ordinal ) {
911
911
912
- npy_int64 startOfDay , periodsPerDay ;
912
+ npy_int64 start_ord , per_day ;
913
913
914
914
switch (freq )
915
915
{
916
916
case FR_HR :
917
- periodsPerDay = 24 ;
917
+ per_day = 24 ;
918
918
break ;
919
919
case FR_MIN :
920
- periodsPerDay = 24 * 60 ;
920
+ per_day = 24 * 60 ;
921
921
break ;
922
922
case FR_SEC :
923
- periodsPerDay = 24 * 60 * 60 ;
923
+ per_day = 24 * 60 * 60 ;
924
924
break ;
925
925
default :
926
926
return 0 ; // 24*60*60 - 1;
927
927
}
928
928
929
- startOfDay = asfreq_DtoHIGHFREQ (dailyDate - ORD_OFFSET , 'S' ,
930
- periodsPerDay );
931
- return (24 * 60 * 60 )* ((double )(originalDate - startOfDay ))/((double )periodsPerDay );
929
+ start_ord = asfreq_DtoHIGHFREQ (daily_ord , 'S' , per_day );
930
+ return (24 * 60 * 60 )* ((double ) (ordinal - start_ord )) / ((double ) per_day );
932
931
}
933
932
934
933
/* Sets the time part of the DateTime object. */
@@ -971,15 +970,10 @@ int dInfoCalc_SetFromAbsDateTime(struct date_info *dinfo,
971
970
abstime );
972
971
973
972
/* Calculate the date */
974
- if (dInfoCalc_SetFromAbsDate (dinfo ,
975
- absdate ,
976
- calendar ))
977
- goto onError ;
973
+ if (dInfoCalc_SetFromAbsDate (dinfo , absdate , calendar )) goto onError ;
978
974
979
975
/* Calculate the time */
980
- if (dInfoCalc_SetFromAbsTime (dinfo ,
981
- abstime ))
982
- goto onError ;
976
+ if (dInfoCalc_SetFromAbsTime (dinfo , abstime )) goto onError ;
983
977
984
978
return 0 ;
985
979
onError :
@@ -1193,9 +1187,9 @@ char *skts_strftime(npy_int64 ordinal, int freq, PyObject *args)
1193
1187
get_asfreq_info (freq , FR_DAY , & af_info );
1194
1188
1195
1189
daily_ord = toDaily (ordinal , 'E' , & af_info );
1196
- abstime = getAbsTime (freq , daily_ord + ORD_OFFSET , ordinal );
1190
+ abstime = get_abs_time (freq , daily_ord , ordinal );
1197
1191
1198
- // printf("daily_ord: %d\n", (int) daily_ord);
1192
+ printf ("daily_ord: %d, abstime: %f \n" , (int ) daily_ord , abstime );
1199
1193
1200
1194
if (dInfoCalc_SetFromAbsDateTime (& tempDate , daily_ord + ORD_OFFSET , abstime ,
1201
1195
GREGORIAN_CALENDAR )) return NULL ;
@@ -1395,7 +1389,7 @@ int get_date_info(npy_int64 ordinal, int freq, struct date_info *dinfo)
1395
1389
{
1396
1390
npy_int64 absdate = get_python_ordinal (ordinal , freq );
1397
1391
/* printf("freq: %d, absdate: %d\n", freq, (int) absdate); */
1398
- double abstime = getAbsTime (freq , absdate , ordinal );
1392
+ double abstime = get_abs_time (freq , absdate - ORD_OFFSET , ordinal );
1399
1393
1400
1394
if (dInfoCalc_SetFromAbsDateTime (dinfo , absdate ,
1401
1395
abstime , GREGORIAN_CALENDAR ))
0 commit comments