java - Ruby 相当于 64 位的 Calendar.getInstance().getTimeInMillis()

标签 java ruby time

我正在使用 Ruby 生成类似于 Java 的 64 位时间戳。我经历了Class:Time它说时间可以使用 63 位整数。我以为我可以使用:

Time.now.to_f * 1000

但我担心由于浮点转换而失去精度。我能否像 Java 中的 ruby​​ 一样尽可能精确地获取 64 位时间戳(自纪元以来的毫秒数)?

Calendar.getInstance().getTimeInMillis();

我需要使用时间戳作为数据库中的唯一 ID,因此我希望将与时间相关的冲突从最少到不存在。

最佳答案

我已经添加了评论,表明这确实不是您应该做的事情,但我真的认为您不需要担心以任何有意义的方式失去精度。 Ruby 文档声明该值存储到纳秒级。将其转换为 float 可能会丢失最后几位数字,但在毫秒级别上不会很重要——你真的不关心这个值是向上还是向下一点,毕竟……你是已经依赖于每毫秒仅创建一个条目。

另一种方法是使用 to_insec:将 to_i 的结果乘以 1000,除以 的结果nsec 乘以 1000000,并将两者相加。这将使您仅使用整数运算即可获得毫秒数。

关于java - Ruby 相当于 64 位的 Calendar.getInstance().getTimeInMillis(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18757558/

相关文章:

ruby - gsub(/(\d{4})\/(\d\d)\/(\d\d)\/(.*)/, '\1-\2-\3-\4' ) 是什么意思?

Ruby:如何检查日期和时间是否在一个范围内

java - Google AutoValue 无法识别 AutoValue_CustomType

java - Java 中的 Lambda 返回字节数组

java - 单例类——ruby 与 java

ruby-on-rails - Active Record 创建数据库时出错

python - 使用不同方法获得相同结果时的性能差异

python - 如何从 python 中的 time.ctime() 获取 datetime.date 和 datetime.time?

java - 装饰 ObservableList 并保留更改事件的最佳实践

java - 如何使用带有 selenium webdriver 的 Windows 文件资源管理器选择多个文件