Tag: ctime

有没有人为MSP430的IAR Embedded Workbench实现了__getzone()?

我不得不在我的应用程序中处理一些时间转换。 我想尽可能坚持使用标准库函数。 现在我使用time_t结构作为我的系统时基。 但是,某些设备可以将时间同步到我的设备,该时间可能是也可能不是UTC。 此外,我的设备将时间同步到另一台设备,该时间将始终为UTC。 无论如何,我可以询问用户什么时区是同步到我的设备的时间以及他们是否使用DST。 当我的设备获得时间同步时,我可以使用mktime直接生成我的时间戳(我的设备系统时间需要与他们为时间戳目的同步的时间相匹配,否则我必须不断进行转换),然后我可以如果我知道我的时间同步来自非UTC源,则使用gmtime()来获取UTC时间。 问题是默认情况下localtime()和gmtime()将返回相同的值,因为默认情况下库认为它是在UTC时间内,并且没有DST或时区偏移。 所以,我认为处理这个问题的方法是实现和覆盖库__getzone函数。 来自EW430_CompilerReference.pdf的第106页 要使__time32,__ time64和date函数有效,必须实现函数clock,__ time32,__ time64和__getzone。 无论使用__time32还是__time64取决于您用于time_t的接口,请参见time.h,第304页。 … __getzone的默认实现指定UTC(协调世界时)作为时区。 Q1:在我的推理中,我是否在正确的轨道上,做我想做的最好的方法是实现这个__getzone函数? 我跟踪的原因是因为__getzone返回的值是一个古怪的字符串w /格式如下: :[XXX [:YYY [:NNN [:DST [:DST …]]]]] 其中XXX是标准时区名称(例如,EST的GMT-5),YYY是夏令时时区名称(例如EST的GMT-4),NNN是UTC的formsHHMM的数字偏移(并且可以有 – 符号然后,DST为夏令时规则指定了一系列选项,这些规则有自己的恼人格式。 无论如何,这对我来说应该是非常直接的,因为我只担心具有相同DST规则的加拿大和美国。 Q2:有没有人有任何形成该字符串的示例代码,以便检查我对此的理解?

c / c ++微秒时间戳

我使用这段代码在c / c ++中以微秒为单位获取时间戳。 但它看起来不像微秒。 我也不知道是否有任何方式来格式化它。 timeval curTime; gettimeofday(&curTime, NULL); int milli = curTime.tv_usec / 1000; unsigned long micro = curTime.tv_usec*(uint64_t)1000000+curTime.tv_usec; char buffer [80]; //localtime is not thread safe strftime(buffer, 80, “%Y-%m-%d %H:%M:%S”, localtime(&curTime.tv_sec)); char currentTime[84] = “”; char currentTime2[80] = “”; sprintf(currentTime, “%s:%3d”, buffer, milli); sprintf(currentTime2, “%s:%Lu”, buffer, micro); printf(“time %s, hptime %s\n”, currentTime, […]

添加一些间隔到tm结构

我有一个结构。 我需要在tm结构中添加一些固定的间隔(在xx年,xx个月,xx天给出)。 这有什么标准function吗? 我使用的编译器是Windows XP上的MSVC 2005。

如何将字符串解析为ctime结构?

是否有一种既定的方法将字符串解析为Time结构? 理想情况下我想做的是反转strftime(…) ,而不是从时间结构和格式字符串生成字符串,我从根据提供的格式字符串解析的字符串中获取时间结构。 我不希望通过包含一个DateTime类来增加额外的开销,例如在Boost或.NET中找到的类