Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Ruby on Rails中获得两个DateTimes之间的秒数

如何在Ruby on Rails中获得两个DateTimes之间的秒数
EN

Stack Overflow用户
提问于 2009-02-19 14:57:42
回答 8查看 72.6K关注 0票数 76

我有为员工做时间跟踪的代码。它创建一个计数器来向员工显示他们已经被打卡了多长时间。

这是当前的代码:

代码语言:javascript
运行
AI代码解释
复制
  start_time = Time.parse(self.settings.first_clock_in)
  total_seconds = Time.now - start_time
  hours = (total_seconds/ 3600).to_i
  minutes = ((total_seconds % 3600) / 60).to_i
  seconds = ((total_seconds % 3600) % 60).to_i

这可以很好地工作。但由于时间被限制在1970 - 2038年的范围内,我们正试图用DateTimes取代所有的时间使用。我想不出如何计算两个DateTimes之间的秒数。减去它们得到一个我不知道如何解释的理性,而减去时间得到以秒为单位的差值。

注意:从Ruby 1.9.2开始,移除了时间的硬限制。但是,时间针对1823-11-12和2116-02-20之间的值进行了优化。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-02-19 15:10:55

减去两个DateTimes将返回经过的时间(以天为单位),因此您可以这样做:

代码语言:javascript
运行
AI代码解释
复制
elapsed_seconds = ((end_time - start_time) * 24 * 60 * 60).to_i
票数 91
EN

Stack Overflow用户

发布于 2010-05-28 20:00:56

或者,更具可读性:

代码语言:javascript
运行
AI代码解释
复制
diff = datetime_1 - datetime_2
diff * 1.days # => difference in seconds; requires Ruby on Rails

请注意,您或其他一些搜索者可能真正在寻找的是:

代码语言:javascript
运行
AI代码解释
复制
diff = datetime_1 - datetime_2
Date.day_fraction_to_time(diff) # => [h, m, s, frac_s]
票数 51
EN

Stack Overflow用户

发布于 2009-02-19 15:08:56

您可以使用to_f将它们转换为浮点数,尽管这会导致与浮点数相关的精度损失。如果您只是转换为整秒的整数,那么它不应该大到足以让人担心。

结果以秒为单位:

代码语言:javascript
运行
AI代码解释
复制
>> end_time.to_f - start_time.to_f
=> 7.39954495429993

>> (end_time.to_f - start_time.to_f).to_i
=> 7

否则,您可以考虑对DateTime对象使用to_formatted_s,看看是否可以将输出转换为Decimal类可以接受的输出,或者只是将其格式化为纯Unix时间字符串并对其调用to_i

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

https://stackoverflow.com/questions/567636

复制
相关文章
Ruby On Rails 4 hello world,Ruby On Rails上手
有机会再试一试Rails了,仅仅是原来接触的是2,如今已然变成了4,似乎如今的安装比原来会快些。。
全栈程序员站长
2022/07/12
2.6K0
Ruby On Rails 4 hello world,Ruby On Rails上手
MySQL 计算两个日期之间相差的秒数 SQL
update h5perf_task set run_state = 0 where id in (SELECT t.id from (SELECT * FROM h5perf_task WHERE run_state = 2 and UNIX_TIMESTAMP( now() )-UNIX_TIMESTAMP(begin_run_time) > 420) t);
一个会写诗的程序员
2018/08/17
3.5K0
Ruby on Rails 基础(6)
没有创建成功,但是反馈结果却是成功 (说明这是一批命令,最后一个反馈结果正常),并且生成一个文件目录
franket
2021/11/25
1.7K0
Ruby on Rails 基础(7)
Note: bundle install 过程中有一个警告,让我们不要使用 root,这样会让其它用户无法操作此应用,其实还有一定安全隐患,这里为图方便,只为了解功能就不去讲究这些了,生产环境下要非常注意 Don’t run Bundler as root. Bundler can ask for sudo if it is needed, and installing your bundle as root will break this application for all non-root user
franket
2021/11/25
1.1K0
Ruby on Rails 基础(9)
报错:There was an error while trying to load the gem 'uglifier'. (Bundler::GemRequireError)
franket
2021/11/25
9740
如何在Ubuntu 18.04上使用RVM安装Ruby on Rails
Ruby on Rails是一个流行的Web应用程序框架,旨在帮助您开发成功的项目,同时编写更少的代码。为了使Web开发变得有趣并且受到强大社区的支持,Ruby on Rails是一个可以免费使用的开源软件,并且欢迎各位用户提出建议以使其更好。
独钓寒江雪_Ly
2018/10/10
9K0
Ruby on Rails 基础(1)
这两条编码哲学可以算是历代猴子们的智慧结晶,核心目标只有一个,最大化的减少代码规模,明确核心逻辑,而这样的好处是多多的(编码效率高,Debug也快)
franket
2021/11/25
6640
Ruby on Rails 基础(1)
这两条编码哲学可以算是历代猴子们的智慧结晶,核心目标只有一个,最大化的减少代码规模,明确核心逻辑,而这样的好处是多多的(编码效率高,Debug也快)
franket
2021/11/25
1.2K0
Ruby on Rails 基础(8)
文件/文件夹 作用 app/ 存放程序的控制器、模型、视图、帮助方法、邮件和静态资源文件。本文主要关注的是这个文件夹。 bin/ 存放运行程序的 rails 脚本,以及其他用来部署或运行程序的脚本。 config/ 设置程序的路由,数据库等。详情参阅 “设置 Rails 程序” 一文。 config.ru 基于 Rack 服务器的程序设置,用来启动程序。 db/ 存放当前数据库的模式,以及数据库迁移文件。 Gemfile, Gemfile.lock 这两个文件用来指定程序所需的 gem 依赖件,用于 Bun
franket
2021/11/25
1.9K0
Ruby on Rails 基础(11)
启动浏览器,可以进行访问 ---- 命令汇总 gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 curl -sSL https://get.rvm.io | bash -s stable rvm list known rvm list rvm install 2.3 ruby -v gem -v sqlite3 --version gem source -l time
franket
2021/11/25
1K0
Ruby on Rails 基础(3)
查看可用ruby版本 [root@h202 ruby]# rvm list known -bash: rvm: command not found [root@h202 ruby]# su - root [root@h202 ~]# cd ruby/ [root@h202 ruby]# rvm list known # MRI Rubies [ruby-]1.8.6[-p420] [ruby-]1.8.7[-head] # security released on head [ruby-]1.9.1[-p
franket
2021/11/25
1.2K0
Ruby on Rails 基础(1)
这两条编码哲学可以算是历代猴子们的智慧结晶,核心目标只有一个,最大化的减少代码规模,明确核心逻辑,而这样的好处是多多的(编码效率高,Debug也快)
franket
2021/11/25
1.2K0
Ruby on Rails 基础(2)
RVM (Ruby Version Manager) 是一个 CLI 工具,可以用来对 ruby 的多个版本进行安装,隔离和管理
franket
2021/11/25
8820
Ruby on Rails 基础(4)
安装Rails 检查环境 检查以下三个软件,确保已经安装 [root@h202 ruby]# ruby -v ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux] [root@h202 ruby]# gem -v 2.5.1 [root@h202 ruby]# sqlite3 --version 3.6.20 [root@h202 ruby]# ---- 替换安装源 如果不替换源,会很慢,或者根本没法获取包,因为有墙 [root@h202 rub
franket
2021/11/25
1.3K0
如何在Ubuntu 18.04上使用rbenv安装Ruby on Rails
Ruby on Rails是创建网站和Web应用程序的开发人员最受欢迎的应用程序堆栈之一。Ruby编程语言与Rails开发框架相结合,使应用程序开发变得简单。
司徒永哥
2018/10/10
6.5K0
如何在Debian 8上使用RVM安装Ruby on Rails
Ruby on Rails是创建网站和Web应用程序的开发人员最受欢迎的应用程序框架之一。Ruby编程语言与Rails开发框架相结合,使应用程序开发变得简单。
好烟
2018/07/26
5.2K0
RoR:Ruby On Rails 的 Web Service
3.c:\flexstore\ruby script/generate model product
用户3135539
2018/09/12
9840
Ruby on Rails 基础(5)
其实就是一捆gems Tip: 查看本地有哪些 gem ,可以通过如下方式 [root@h202 ruby]# gem list *** LOCAL GEMS *** actionmailer (4.2.6) actionpack (4.2.6) actionview (4.2.6) activejob (4.2.6) ... ... rdoc (4.2.1) rvm (1.11.3.9) sprockets (3.6.0) sprockets-rails (3.0.4) test-unit (3.1.
franket
2021/11/25
8810
Ruby on Rails 基础(10)
成功启动,在本地启动浏览器,可以进行访问 (无法从外部访问,原因是并未绑定IP) 直接使用 Ctrl + C 就可以停止此应用 如果希望从外部访问,可以进行如下配置 -b 可以绑定服务 IP [root@h202 blog]# rails server -b 0.0.0.0 => Booting WEBrick => Rails 4.2.6 application starting in development on http://0.0.0.0:3000 => Run `rails server -h
franket
2021/11/25
4440
ruby on rails使用笔记
如果升级过程中说xcode版本太低 还得先升级xcode 重启电脑后继续升级ruby 升级完系统依然报错说xcode版本太低可以使用以下命令切换xcode版本
lilugirl
2019/05/28
1.2K0

相似问题

如何在MYSQL中获得两个datetimes之间的差异?

50

如何在Server中获得两个日期之间的秒数?

46

如何在javascript中获得两个日期之间的秒数?

20

计算两个XQuery之间的秒数的dateTimes表达式是什么?

12

如何在Oracle中查找两个datetimes之间的差异

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文