首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >到毫秒的日期总是唯一的吗?

问到毫秒的日期总是唯一的吗?
EN

Stack Overflow用户
提问于 2014-01-03 00:17:31
回答 5查看 1.2K关注 0票数 0

我使用当前的日期和时间来生成一个唯一的文件夹名称。有没有可能发生冲突的情况?我不这么认为,因为精确到毫秒,没有两个日期是相同的(除非两个上传发生在同一毫秒--但这在我目前的场景中不太可能)。

代码语言:javascript
复制
(Time.now.to_f * 1000).to_i
EN

回答 5

Stack Overflow用户

发布于 2014-01-03 00:24:45

您可能希望使用the tmpdir standard library中的Dir.mktmpdir。它将处理一个真正唯一且无冲突的目录名,并将系统时间和进程id考虑在内。

票数 3
EN

Stack Overflow用户

发布于 2014-01-03 00:33:05

确实如此,但过去一毫秒后的强制时间get至少相差1(在某些情况下相差2),只有当你将其乘以1000,然后得到一个整数时才会如此。

代码语言:javascript
复制
pp = (Time.now.to_f * 1000).to_i; sleep 0.001 ; ppp = (Time.now.to_f * 1000).to_i
# 1388680023598
# 1388680023599

当你乘以10^6时,你会得到另一个结果:

代码语言:javascript
复制
pp = (Time.now.to_f * 1000000).to_i; sleep 0.001 ; ppp = (Time.now.to_f * 1000000).to_i
# 1388681046148709
# 1388681046149988

此外,如果您希望获得唯一的名称,您可以使用的ruby版本的GUID。但是如果你需要创建唯一的临时文件夹,你应该使用ruby的方法来创建一个临时文件夹,正如前面的答案所指出的那样。

票数 1
EN

Stack Overflow用户

发布于 2014-01-03 04:38:46

我不这么认为,因为,精确到毫秒,没有两个日期是相同的

你假设当你从你的系统时钟中获得时间时,你已经有了毫秒的分辨率。即使你得到的是毫秒数,这并不意味着硬件的分辨率是1毫秒。

对于大多数现代计算机和操作系统,它更接近于10毫秒。如果你预计会有大量的调用,你当然可以读取接近几毫秒的时间,它们可能会得到相同的时间戳。

最好附加一个自动递增的整数,或者一些随机数或guid。如果你想要一些排序,你可以添加一个时间表和另一个数字。

此外,您应该记住,用户可以随时调整时钟,或者如果系统通过NTP同步,则时钟可能会自行更改。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20887032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档