duration1 = 63000 # expected value: 17 h 30 m
duration2 = 28800 # expected value: 8 h
duration3 = 1800 # expected value: 30 m
puts(Time.at(duration1).utc.strftime('%H h %M m').gsub(/\b(?:00 [hm]|0(?=[1-9] [hm]))\s*/, ''))
puts(Time.at(duration2).utc.strftime('%H h %M m').gsub(/\b(?:00 [hm]|0(?=[1-9] [hm]))\s*/, ''))
puts(Time.at(duration3).utc.strftime('%H h %M m').gsub(/\b(?:00 [hm]|0(?=[1-9] [hm]))\s*/, ''))
ZHVyYXRpb24xID0gNjMwMDAgICMgZXhwZWN0ZWQgdmFsdWU6ICAxNyBoIDMwIG0KZHVyYXRpb24yID0gMjg4MDAgICMgZXhwZWN0ZWQgdmFsdWU6ICA4IGgKZHVyYXRpb24zID0gMTgwMCAgICMgZXhwZWN0ZWQgdmFsdWU6ICAzMCBtCgpwdXRzKFRpbWUuYXQoZHVyYXRpb24xKS51dGMuc3RyZnRpbWUoJyVIIGggJU0gbScpLmdzdWIoL1xiKD86MDAgW2htXXwwKD89WzEtOV0gW2htXSkpXHMqLywgJycpKQpwdXRzKFRpbWUuYXQoZHVyYXRpb24yKS51dGMuc3RyZnRpbWUoJyVIIGggJU0gbScpLmdzdWIoL1xiKD86MDAgW2htXXwwKD89WzEtOV0gW2htXSkpXHMqLywgJycpKQpwdXRzKFRpbWUuYXQoZHVyYXRpb24zKS51dGMuc3RyZnRpbWUoJyVIIGggJU0gbScpLmdzdWIoL1xiKD86MDAgW2htXXwwKD89WzEtOV0gW2htXSkpXHMqLywgJycpKQo=