天道酬勤,学无止境

time

Why is mktime returning -1 for my std::tm

问题 我有一个看起来正确的std::tm 。 但是,当使用mktime进行规范化时,我看到了-1 根据man mktime : The mktime() function returns the specified calendar time; if the calendar time cannot be represented, it returns -1; 但是,查看我发布的屏幕截图,我看不出std::tm中的内容有什么问题tm_gmtoff和tm_zone有问题吗? 回答1 struct tm对象的tm_year成员表示自 1900 年以来的年份,而不是年份编号。 将tm_year设置为 2014 是指 3914 年,这可能超出了time_t的范围。 在许多系统上, time_t值是一个带符号的 32 位整数,表示自 1970 年 1 月 1 日 00:00:00 UTC 以来的秒数,它在 2038 年溢出。 造成这种情况的原因是历史性的。 当这个界面被发明出来时,年份是用 2 位数字存储的,因为这在当时似乎是合理的做法。 它后来被更新为能够一致地引用 1999 年之后的年份,但在不破坏现有代码的情况下更改现有值是不可能的。 还有一点需要注意: tm_mon成员将一月编码为 0,十二月编码为 11; 这便于用作月份名称数组的索引。 您示例中的tm_mon值 5 指的是六月

2022-07-11 09:38:24    分类:技术分享    c++   datetime   c++11   time   mktime

Call function every x seconds (Python) [duplicate]

问题 这个问题在这里已经有了答案: 每 x 秒重复执行一个函数的最佳方法是什么? [关闭] (21 个答案) 4 个月前关闭。 我想每 10 秒调用一次函数(实际上是一个 Web API)。 但是该函数可能需要随机 t 秒才能返回。 (假设 t 为 0.1 到 1.0 秒) 我们能想到的最简单的代码是 while True: func() # take t sec time.sleep(10) # sleep 10 sec 但在这种情况下, func每 (1+t) 秒调用一次。 有更好的方法吗? 我们应该使用一些多线程或类似的东西吗? 具体的代码示例将不胜感激。 谢谢你。 回答1 import time nexttime = time.time() while True: func() # take t sec nexttime += 10 sleeptime = nexttime - time.time() if sleeptime > 0: time.sleep(sleeptime) 回答2 我发现了另一种使用sched模块的方法。 import time import sched def daemon(local_handler, t): print('time {}'.format(t)) # call func here # time.sleep(2) local

2022-05-17 02:38:04    分类:技术分享    python   api   loops   time

Golang time - time zone showing twice

问题 运行此代码时,结果应显示日期时间和区域 令人惊讶的是,结果显示了两次时区,我无法弄清楚为什么 package main import ( "fmt" "time" ) func main() { mytime, _ := time.Parse("02/Jan/2006:15:04:05 -0700", "07/Apr/2017:01:26:05 +0530") fmt.Println(mytime) } 这个的输出是 2017-04-07 01:26:05 +0530 +0530 所以我的问题是为什么时区显示两次? 回答1 fmt.Println调用Time的.String()函数,该函数以下列格式返回时间: "2006-01-02 15:04:05.999999999 -0700 MST" 如您所见,其中包含时区偏移量和时区名称。 在您的情况下,没有已知时间的时区名称,因此它会输出两次偏移量。 参考: https://golang.org/pkg/time/#Time.String

2022-05-16 16:01:30    分类:技术分享    go   time

How can I print every minute using Datetime with Python

问题 import time import datetime as dt t = dt.datetime.now() while True: if 60 seconds has passed: print("1 Min") 回答1 import datetime as dt # Save the current time to a variable ('t') t = dt.datetime.now() while True: delta = dt.datetime.now()-t if delta.seconds >= 60: print("1 Min") # Update 't' variable to new time t = dt.datetime.now() 回答2 import datetime as dt from time import sleep t = dt.datetime.now() minute_count = 0 while True: delta_minutes = (dt.datetime.now() -t).seconds / 60 if delta_minutes and delta_minutes != minute_count: print("1 Min has passed since the last print") minute

2022-05-16 07:10:31    分类:技术分享    python   loops   datetime   time

What is the highest date precision in PHP?

问题 回答1 如果准确地说是指可能的最小时间增量,根据 PHP 手册,您可以获得以微秒为单位的 Unix 时间戳。 只要您的操作系统支持gettimeofday()系统调用。 微时间() 回答2 常用方法是microtime(true) ,但它可能不是最精确的选择。 DateTime默认情况下不是很好,会给你几秒钟。 $ php -r 'echo (new \DateTime())->format("Uu");' 1483069259.000000 microtime(true)更好,并为您提供近似微秒,但浮点精度会进行一些舍入。 $ php -r 'echo microtime(true);' 1483069130.6427 gettimeofday()更好,并为您提供精确的微秒。 您可以使用microseconds(false) ,但处理输出更难。 $ php -r 'echo implode(".", array_slice(gettimeofday(), 0, 2));' 1483070039.572630 所以最好的\DateTime实例是,具有完整的微秒精度: \DateTime::createFromFormat("U.u", implode(".", array_slice(gettimeofday(), 0, 2)))

2022-05-15 18:58:06    分类:技术分享    php   time

dynamic server time

问题 据我了解,我无法在 IE 中使用脚本中的 settimeout() 获取动态服务器时间。我找到了这个例子: function timeExam(){ $.ajax({ url : "inc/clock.php", success : function (data) { $("#clock_time").html(data); } }); var func = function() { timeExam(); } setTimeout(func, 1000); } <body onload="timeExam();"> bla bla bla </body> 也许有可能让它工作? 如果没有,您能否向我推荐一个适用于所有浏览器的带有服务器时间的动态时钟?! 我用prototype.js 尝试了一个时钟,但它与IE8 中的jquery UI 冲突(显示选择菜单不正确)。 我在脚本中添加了没有冲突代码,但它没用..必须删除prototype.js 回答1 您的脚本所做的是在您的服务器上的 inc/clock.php 上轮询一个脚本,并用脚本的输出(大约)每秒替换您的 #clock_time 元素的内容。 这应该可以工作,前提是您有一个 id 为 clock_element 的元素和 yoursite.tld/inc/clock.php 中的一个脚本 但是

2022-05-15 09:31:25    分类:技术分享    javascript   dynamic   time

Is there a PTP (Precision Time Protocol | IEEE 1588) library?

问题 我的任务是使用 PTP(精确时间协议,IEEE 1588)时间源同步记录来自 PLC 的数据的时间关键过程。 快速浏览一下可用的库,除了基于 IVI-C 和 IVI-COM 的实现之外什么都没有。 是否有我错过的支持 PTP 的托管库,或者我是否需要找到一种方法来在我的应用程序中使用为 LabVIEW 设计的 IVI-COM 库? 回答1 我已经参考了这个网站http://code.google.com/p/ptpv2d/wiki/Introduction的以下答案,我给了我一个关于ptpv2d的清晰想法,希望你也能得到明确的信息,关于这个。 请也参考这个 http://code.google.com/p/ptpv2d/ ptpv2d 是 GPL 许可的 IEEE 1588 版本 1、版本 2 和 IEEE 802.1AS 的开源代码,包括飞思卡尔 MPC831x 系列处理器的硬件时间戳。 ptpv2d 是一种精确时间协议,具有以下特性: 在标准 LINUX 下运行的用户模式应用程序,采用模块化设计,可确保轻松移植到其他操作系统。 广泛的可选打印到控制台调试消息功能。 可以在编译时添加或省略此消息功能。 如果包含它,则输出级别是命令行可选的。 调试消息采用统一格式,以便更快、更轻松地进行分析。 POSIX 套接字调用用于检索所有消息。 消息处理包含在一个单独的模块中

2022-05-14 12:40:06    分类:技术分享    .net   time   ieee

Time difference in Javascript

问题 回答1 首先,我建议使用现有的日期处理库,如 Datejs。 如果一个经过时间考验的库具有一套全面的方法,您将受益匪浅。 使用 Datejs,您的答案很简单: Date.parse(timeText).isAfter((new Date()).addHours(1)); 如果您不想使用 Datejs,则可以使用正则表达式在验证时间之前对其进行解析。 我编写了一组函数,以及在 Firebug 控制台中运行的单元测试,它们就是这样做的: function isOneHourGreater(timeText, time) { var parsedTime = parseTime(timeText); if (parsedTime === null) { return null; } return (parsedTime.getTime() - time.getTime()) > (1 * 60 * 60 * 1000); } function parseTime(timeText) { timeText = timeText.replace(/^\s+|\s$/g, ''); var regex = /^(\d{1,2}):(\d{1,2})\s*(am|pm)$/i; if (!regex.test(timeText)) { return null; } var

2022-05-14 12:19:04    分类:技术分享    javascript   time

Subset a data frame based on a time sequence

问题 我有一个名为 DF 的数据框,其中包含时间和日期列。 我想根据这些列中的值对 DF 进行子集化。 对于日期,我在 DATES 中有一个日期列表,并且正在对 DATES 中存在 DF$Date 的 DF 行进行子集化。 当时,我想从 00:04:00 到 00:06:00 进行子集化。 我不知道后者该怎么做。 理想情况下,我想通过指定范围(如 00:04:00 到 00:06:00)以及指定起点和前瞻分钟(如 00:04:00 和 3 分钟)来对两者进行子集化(两种不同的方法)。 我想这一切都归结为制作一个时间序列,并将这样的序列放在一个单独的向量中,然后我可以使用它进行匹配。 请注意,这只是一个简短的可重复示例。 我正在寻找一种通用的方法来做到这一点,因为在实践中我想对大的时间跨度进行子集化。 另请注意,即使在此示例中只有一个匹配日期,实际上也会有许多匹配日期跨越多年。 这就是为什么我认为不可能使用POSIXlt来制作时间序列。 非常感谢你。 #DF looks like this: # DateTime XXX Time Date #1371 2016-04-25 00:08:00 14 00:08:00 2016-04-25 #1372 2016-04-25 00:07:00 13 00:07:00 2016-04-25 #1373 2016-04-25 00:06:00

2022-05-14 00:58:05    分类:技术分享    r   time   sequence   subset

What is the arbitrary point that is referenced in System.nanoTime Javadoc?

问题 我知道System.nanoTime()与时代无关(尽管与System.currentTimeMillis()有关)。 从 Javadoc 中,它指出从System.nanoTime()返回的值是从某个任意时间点(甚至可能是未来)的偏移量。 关于这个 这个时间点是否在同一平台上的 JVM 实例中保持不变? 跨平台的 JVM 实例的这个时间点是否恒定? 如果假设我运行我的应用程序并将System.nanoTime()的值保存到文件中。 接下来我重新执行我的应用程序并计算文件中的值与从System.nanoTime()返回的新值之间的差异。 那么可以安全地假设差异是执行之间的实际时间量吗? 如果任意时间点保持不变。 但是我不确定这就是行为 回答1 不,这是任意的。 不要依赖它是任何给定的值,因为它没有被指定以这种方式工作。 正如它在 Javadoc 中所说: 在 Java 虚拟机实例中,此方法的所有调用都使用相同的来源; 其他虚拟机实例可能使用不同的来源。 System.nanoTime()用于测量单个 JVM 上经过的时间,因此您只关心两次调用之间其值的差异。 因此,不需要知道偏移量。 回答2 nanoTime的实现是非常特定于平台的。 例如,这取决于您的平台上有哪些高分辨率计时器可用(如果没有,结果就是currentTimeMillis乘以 10^6)即使对于给定的平台

2022-05-14 00:28:04    分类:技术分享    java   time