C difftime在MinGW中返回不正确的值

C difftime在MinGW中返回不正确的值,c,windows,time,mingw,time.h,C,Windows,Time,Mingw,Time.h,我正试图计算两个时间\u t之间的差值 但是difftime返回它的第一个参数,而不是差 我的代码是: #include <windows.h> #include <stdio.h> #include <time.h> #include <unistd.h> int main(){ time_t etime_t,now_t; double time_diff; now_t=1388525484L;

我正试图计算两个
时间\u t
之间的差值
但是
difftime
返回它的第一个参数,而不是差
我的代码是:

 #include <windows.h>
 #include <stdio.h>
 #include <time.h>
 #include <unistd.h>

 int main(){
     time_t etime_t,now_t;
     double time_diff;
     now_t=1388525484L;
     etime_t=1389338644L;
     time_diff=difftime(now_t,etime_t);
     printf("%f",time_diff);
 }
我正在使用
GCC
(在
MinWG
)编译
有什么问题吗?

/*我的小实验室:*/
/*my little lab:*/
#include <sys/types.h>
#include <stdio.h
#include <time.h>
#include <unistd.h>
int main(void)
{
 time_t etime_t, now_t;
 struct tm timev_n; 
 struct tm timev_e; 
 struct tm *ptimev_n = &timev_n; 
 struct tm *ptimev_e = &timev_e; 

 double time_diff;
 now_t= 1388525484L;
 etime_t=   1389338644L;
 ptimev_n= gmtime_r(&now_t, ptimev_n );
 ptimev_e= gmtime_r(&etime_t, ptimev_e );
 printf (" now:  %s \n", asctime(ptimev_n)); 
 printf (" end:  %s \n", asctime(ptimev_e)); 
 // time_diff=difftime(now_t,etime_t);
 time_diff=difftime(etime_t, now_t);
 printf("%f \n",time_diff);
 etime_t = (time_t)  time_diff;
 ptimev_e= gmtime_r(&etime_t, ptimev_e );
 printf ("back to the 70's diff:  %s \n", asctime(ptimev_e)); 

 return 1;
 }
#包括
#包括一个小虫子。它们将difftime编译为标准windows函数的调用。但是,即使参数为64位,它们也会调用difftime的32位版本。这将给出预期的结果,因为它将第一个参数的上半部分(即0)从下半部分减去。看见 在这里可以通过插入临时固定

#define _USE_32BIT_TIME_T 1

在包含time.h之前

显然是#定义difftime(t1,t0)(double)(t1-t0)。你能试一下在printf()中直接打印“double(t1-t0)”吗?(你对时间类型的实现做了一些假设,这是错误的。)@kripanad:减法没问题!只有
difftime
失败@蓝精灵:什么?!有什么不同?我希望切换参数会产生负面结果!似乎
difftime
不符合逻辑!(?)使用
now\u t-etime\u t
而不是
difftime
垃圾解决了我的问题-但我想不是
difftime
的问题;-)-Thankstime\u t:这是能够表示时间的算术类型。clock_t和time_t中可表示的时间范围和精度由实现定义。“这给出了预期结果,因为它将第一个参数的上半部分(即0)从下半部分减去。”,为什么会这样,因为第一个参数是结束时间,第二个参数是开始时间(因此,参数封送是如何工作的)?在
时间之前添加
#define(定义)使用(32位)时间(t1)
。h
并不总能解决问题。根据个人经验,我得出结论,它必须包含在
stdio.h
之前。请详细说明您的答案?
#define _USE_32BIT_TIME_T 1