ruby - 从字符串制作时间戳
问题描述
我需要格式化161901
为04:19:01PM
.
我尝试了以下方法:
Time.parse(161901)
"161901".chars.each_slice(2).map(&:join)
Time.parse("161901".chars.each_slice(2).map(&:join))
作为 ruby 的新手,很难找到方法。
解决方案
这是最基本的答案,但它做出了一些假设:
require 'time'
time = Time.strptime('161901', '%H%M%S')
time.strftime('%I:%M:%S%p')
=> "04:19:01PM"
问题是您的字符串 '161901' 可能会或可能不会被填充,它也可能是整数而不是字符串。例如,如果时间是上午 6:00,也许你会得到一个字符串,例如:'60000',你需要在左侧填充它以正确解析它。因此,我建议采用以下方法:
require 'time'
# Assume your time is an integer with no right padding:
time = 61901
ptime = Time.strptime(time.to_s.rjust(6, '0'), '%H%M%S') # Do proper padding
ptime.strftime('%I:%M:%S%p')
=> "06:19:00AM"
这应该有助于清理您正在解析的变量以产生一致的结果。
参考资料:https ://ruby-doc.org/stdlib/libdoc/date/rdoc/DateTime.html#method-i-strftime
推荐阅读
- xamarin - 如何使用 CollectionView 在 Xamarin.Forms 中使用外部 DataTemplate?
- java - Netbeans 项目库 - 编译时库与运行时库
- ios - 如何使用 Collection View 创建 2 x 2 网格布局?
- c++ - SFINAE 允许这样做吗?
- powershell - 如何使用 PowerShell 将您的用户名添加到管理员?
- powershell - 将多个项目从一个 Outlook 文件夹移动到另一个文件夹的问题 - Powershell
- html - 使用内联样式语法时我应该使用空格吗?
- python-3.x - 为什么 .get 给我 PY_VAR0 而不是字符串
- javascript - 如何使用startsWith过滤和获取每个对象键的值?
- php - 如何确保 Laravel 单一身份验证?