【问题标题】:How do I insert leading zeros in Ruby dateTime minute如何在 Ruby dateTime 分钟中插入前导零
【发布时间】:2014-02-23 09:47:42
【问题描述】:

我有一个调用 API 的脚本。 API 返回一个 dateTime.iso8601 对象。不过,我似乎无法弄清楚如何在分钟上获得前导零。

我在这里查看了其他问题,说要使用 strftime,但会抛出 undefined method 'strftime'

我尝试了以下方法:

systems.each do |system|
    time = system["last_checkin"].strftime('%H:$M')
    print "#{system['name']} #{time}\n"
end

systems.each do |system|
    time = system["last_checkin"]
    hour = time.strftime('%H')
    min = time.strftime('%m')
    print "#{system['name']} #{hour}:#{min}\n"
end

还有一些我已经不记得了。

我应该如何处理这个问题?

【问题讨论】:

  • system["last_checkin"].class 的输出是什么?
  • opensuse-12-3:ruby:8688 $ ./sat-inactive.rb XMLRPC::DateTime XMLRPC::DateTime XMLRPC::DateTime XMLRPC::DateTime XMLRPC::DateTime XMLRPC::DateTime XMLRPC::DateTime XMLRPC::DateTime XMLRPC::DateTime XMLRPC::DateTime 我猜这个类的几个项目在对象中?
  • 你看过strftime的文档吗?
  • 所以 XMLRPC::DateTime 没有 strftime ruby-doc.org/stdlib-2.1.0/libdoc/xmlrpc/rdoc/XMLRPC/…
  • 我确实注意到了,是的。如果我只使用 time.min 来提取分钟戳,我只会得到一位没有前导零的数字。我怎样才能得到那个前导零? time.min 是一个简单的字符串,然后可以这样操作吗?

标签: ruby datetime xml-rpc datetime-format


【解决方案1】:

试试

system["last_checkin"].to_time.strftime('%H:%M')

这会将其转换为Time(有日期),然后您可以使用 strftime 获取您想要的格式

【讨论】:

  • 更进一步,改用%R。感谢您引导我找到正确的文档。
  • np,您始终可以使用存在于所有对象上的.class.inspect(检查显示复杂项目的更多信息)以获取信息,然后运行到ruby-docapi-doc 或@ 987654324@ 供选择
【解决方案2】:

在四处挖掘并将我拥有和收到的信息拼凑在一起后,我终于能够找到对我有意义的东西。

我只是格式化了 time.min 字符串:

min = "%02d" % time.min

我还在 time.hour 中添加了12 以获得 24 小时格式。

systems.each do |system|
    time = system["last_checkin"]
    hour = time.hour + 12
    min = "%02d" % time.min
    print "#{system['name']} #{hour}:#{min}\n"
end

我想有一种更简洁的方法可以做到这一点,但作为 Ruby 新手,我对此很满意。

编辑: 在编写我的解决方案时,jtzero 发布了我期望的更简洁的方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-08
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多