每个视频都有一段时间。例如,对于每个YouTube视频,它的持续时间可能是4分钟或30秒。
问题是如何将其保存到数据库中?
只需将其存储为string
4:30
?或者将其更改为秒并将其存储为integer
?然后,我该如何将其更改回minute:second
格式?
附加说明:
现在我正在制作一个视频聚合器,所以时间实际上是seconds: 30
,或者只是像4:30
这样的简单格式,那我怎样才能将后一种格式变成秒整数? / p>
答案 0 :(得分:1)
保持时间的方式取决于您的业务逻辑。 我宁愿在几秒钟内保持长度,然后转换为分钟,小时等。 你可以通过简单的决策轻松完成:
minutes = (seconds / 60)
seconds_left = (seconds % 40)
human_time = "#{minutes}:#{seconds_left}"
答案 1 :(得分:1)
您可以使用Time类来解析时间字符串。
require 'date' # Only needed outside of rails!
require 'active_support/all' # Only needed outside of rails!
video_length = "04:30"
# This ensures the format of video_length is HH:MM:SS
def hours_minutes_seconds(str)
parts = str.split(':').reverse
len = parts.length
if ! parts.length || parts.length > 3
raise("bad input (#{str}) for hours_minutes_seconds") and return
end
(0..2).map do |i|
part = parts[len -i]
part || "00"
end.join(':')
end
#Remember how unix time starts at 1 Jan 1970?
time = DateTime.iso8601( "1970-01-01T#{hours_minutes_seconds(video_length)}Z" )
# Lets print it out!
puts time.utc.strftime("%H:%M:%S") # 00:04:30
然后,您可以将值存储为秒数[整数]。在几秒钟内从长度中获取时间对象很容易。
puts Time.at(seconds).utc.strftime("%H:%M:%S") # 00:04:30