我需要一种通用的方法来在几个数据库中存储日期和日期时间(现在是Sqlite,MySql和PostgreSql)。 我需要日期时间精确到微秒。
所以我想把日期保持为整数(4个字节) - 自unix时代以来的天数,以及整数时间(8个字节) - 自unix时代以来的微秒。
问题:
time.time()/86400
(python)。 答案 0 :(得分:2)
时间()/ 86400很好。我以前做过这个;你不应该预料到任何问题。您还可以将时间()截断到最接近的86400的倍数,这可能会更好一点,因为您可以将它传递给已接受time_t
的各种函数,并将其作为日期的午夜UTC发布问题。
不要担心闰秒。只有专门的软件才会考虑它们。所有通用操作系统上的系统日期和时间,以及所有通用日期和时间库假装它们不存在。您的NTP服务器只需将系统时钟提前一秒就可以实现它们。
C gettimeofday
将时间作为两个单独的4字节整数值返回:自纪元以来的秒数和自第二个开始的微秒(struct timeval
)。类似地,C的clock_gettime
将时间作为两个单独的4字节整数值返回:自纪元以来的秒,以及自第二个开始以来的纳秒(struct timespec
)。如果您关心与现有时间表示的兼容性,您可以选择这两种格式中的一种,而不是自纪元以来的8字节整数计数微秒。另一方面,这两个都有y2.038k错误(除非第一个整数扩展到8个字节,总共12个字节)并且它们在数据库中使用起来不太方便。所以我认为自从纪元以来你对微秒的想法就好了。