首页 > 解决方案 > 从字符串制作时间戳

问题描述

我需要格式化16190104:19:01PM.

我尝试了以下方法:

Time.parse(161901)
"161901".chars.each_slice(2).map(&:join)
Time.parse("161901".chars.each_slice(2).map(&:join))

作为 ruby​​ 的新手,很难找到方法。

标签: rubytime

解决方案


这是最基本的答案,但它做出了一些假设:

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


推荐阅读