Tag: time

关于time.h中的clock(),time()和difftime()的问题?

int fib(int n,int a,int b){ if (n==2){ return a+b; } return fib(n-1,b,a+b); } int main() { time_t begin,end; begin = clock(); fib(10000,0,1); end = clock(); printf(“%f”,difftime(end,begin)); } int main() { time_t begin,end; time(&begin); fib(10000,0,1); time(&end); printf(“%f”,(double)(end-begin)/CLOCKS_PER_SEC); } 1)第一个问题为什么我的第一个主要打印给我打印时间288.000000 ,我假设这是288毫秒,但在文档中它应该在几秒钟内给我结果。顺便说一下,我在Mac上。 2)第二个问题为什么第二个主要问题。 为什么打印输出时间为0.000000 。 我明白time()给了我一个time_t结构,我把它放在begin和end time_t结构中然后我发现差异在几秒钟内,似乎不起作用。

time.h和linux / time.h之间的声明冲突阻止我使用CLOCK_TAI

我想用 #include clock_gettime(CLOCK_TAI, &…); 但不幸的是CLOCK_TAI没有在库存time.h头文件中定义(至少在openSUSE 13.2中)。 但是它在linux / time.h中定义,实际上是由操作系统支持的。 但是如果我包含后一个标题,它会引发一堆声明冲突 – 与time.h和bits / types.h相比 。 仅包括linux / time.h没有帮助,因为time.h和/或bits / types.h将被unistd.h或stdlib.h隐含地包含在公共头文件中。 所以我尝试手动解决冲突。 特别是,第一个编译器错误消息是关于timespec重新声明,所以我在我的代码中写道: #include #if defined(__timespec_defined) && !defined(_STRUCT_TIMESPEC) #define _STRUCT_TIMESPEC #endif #include 它起作用,但不是没有与itimerspec重新声明的另一个冲突,它在两个标题中都是无条件宣布的,并没有与任何包含守卫的定义结束。 所以我决定完全禁止隐含的time.h包含: #include #ifndef _TIME_H #define _TIME_H #endif 这继续与编译器抱怨时间重新声明。 所以我也禁止了隐含的bits / types.h包含: #include #ifndef _TIME_H #define _TIME_H #endif #ifndef _BITS_TYPES_H #define _BITS_TYPES_H #endif 好吧,但这也删除了重要的基本声明,其中像size_t这样的常见类型是基于的。 […]

time.h适用于C ++,而不适用于C语言

代码: #include “stdafx.h” #include “stdio.h” #include “math.h” #include “stdlib.h” #include “time.h” int main() { time_t start, end; time (&start); int i; double dif; /*int serie[100000];*/ /* int *serie = malloc( sizeof(int) ); for (i = 0; i <= 100000; i++) { *serie(i)=rand(); printf("%d \n", serie[i]); } */ time (&end); dif = difftime (end, start); printf […]

Unix时间戳到FAT时间戳

我试图将时间结构转换为FAT时间戳。 我的代码看起来像: unsigned long Fat(tm_struct pTime) { unsigned long FatTime = 0; FatTime |= (pTime.seconds / 2) >> 1; FatTime |= (pTime.minutes) << 5; FatTime |= (pTime.hours) << 11; FatTime |= (pTime.days) << 16; FatTime |= (pTime.months) << 21; FatTime |= (pTime.years + 20) << 25; return FatTime; } 有人有正确的代码吗?

clock_t,time_t和struct tm有什么区别?

clock_t,time_t和struct tm有什么区别? struct tm看起来像这样: struct tm{ int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; }; 但是clock_t和time_t怎么样?

如何用C转换UTC到当地时间?

这是一个简单的问题,但解决方案似乎远非简单。 我想知道如何从UTC转换为本地时间。 我正在寻找一种标准的C解决方案,或多或少保证可以在任何位置的任何计算机上工作。 我仔细阅读了以下链接,但我找不到解决方案: 在C中将包含localtime的字符串转换为UTC 在C / C ++中在本地时间和GMT / UTC之间转换 我尝试了很多变体,例如(datetime是一个带有时间和日期的字符串,以UTC表示): strptime(datetime, “%A %B %d %Y %H %M %S”, tp); strftime(printtime, strlen(datetime), “%A %B %d %Y %H %M %S”, tp); 要么 strptime(datetime, “%A %B %d %Y %H %M %S”, tp); lt=mktime(tp); printtime=ctime(&lt); 无论我尝试什么,printtime最终都与UTC相同。 编辑11-29-2013 :基于下面“R”的非常有用的答案,我终于开始创建一个工作示例。 我发现它在我测试它的两个时区中正常工作,CET和PST: #include #include #include long long diff_tm(struct tm *a, […]

localtime返回在cygwin shell上运行的Windows程序的GMT

请考虑以下代码: time_t t; t = time( NULL ); elog << "timezone: " << getenv( "TZ" ) << ", current local time: " << asctime( localtime( &t )); 如果我使用MSVC构建此代码,并在Windows DOS shell下运行它,我得到正确的本地时间: timezone: , current local time: Wed Jul 25 13:05:08 2012 但是如果我在像bash这样的cygwin shell下运行相同的程序,这段代码会返回GMT! timezone: America/New_York, current local time: Wed Jul 25 18:05:08 2012 如果我在Linux或OsX中运行此程序,它也会返回正确的本地时间。 为什么? @Update:现在是一年之后,我发现下面给出的答案并不总是有效。 […]